def test(store):
import os
from One import One
from Two import Two
# Note: Two inherits One
# Simple creation and insertion
one = One()
one.setA('a')
one.setB('b')
store.addObject(one)
two = Two()
two.setA('1')
two.setB('2')
two.setC('3')
two.setD('4')
two.setE('a')
store.addObject(two)
store.saveChanges()
store.clear()
# Fetching
objs = store.fetchObjectsOfClass(One)
assert len(objs) == 2
obj = objs[0]
assert obj.a() == 'a'
assert obj.b() == 'b'
objs = store.fetchObjectsOfClass(One, isDeep=0)
assert len(objs) == 1
objs = store.fetchObjectsOfClass(One, clauses="where a='1'")
assert len(objs) == 1
assert objs[0].c() == '3'
objs = store.fetchObjectsOfClass(One, clauses="where a='2'")
assert len(objs) == 0
objs = store.fetchObjectsOfClass(Two)
assert len(objs) == 1
obj = objs[0]
assert obj.a() == '1'
assert obj.b() == '2'
assert obj.c() == '3'
assert obj.d() == '4'
# Using fetchObject to fetch individual objects of both base class and subclass
objs = store.fetchObjectsOfClass(One)
assert len(objs) == 2
for obj in objs:
fetchedObj = store.fetchObject(obj.__class__, obj.serialNum())
assert fetchedObj.__class__ == obj.__class__
assert fetchedObj.a() == obj.a()
# Using fetchObjectsOfClass when there are several objects of the base class and subclass
for i in range(19): # To make a total of 20 One's
one = One()
one.setA('a' + str(i))
one.setB('b' + str(i))
store.addObject(one)
for i in range(14): # To make a total of 15 Two's
two = Two()
two.setA('a' + str(i))
two.setB('b' + str(i))
two.setC('c' + str(i))
two.setD('d' + str(i))
store.addObject(two)
store.saveChanges()
objs = store.fetchObjectsOfClass(One)
assert len(objs) == 35
objs = store.fetchObjectsOfClass(One, isDeep=0)
assert len(objs) == 20
objs = store.fetchObjectsOfClass(Two)
assert len(objs) == 15
objs = store.fetchObjectsOfClass(Two, isDeep=0)
assert len(objs) == 15
|