def test(store):
from Foo import Foo
f = Foo()
# legal sets:
f.setRi(1)
f.setNi(2)
f.setRs('a')
f.setNs('b')
f.setNi(None)
f.setNs(None)
# illegal sets:
errMsg = 'Set None for required attribute, but no exception was raised.'
try:
f.setRi(None)
except Exception:
pass
else:
raise Exception, errMsg
try:
f.setRs(None)
except Exception:
pass
else:
raise Exception, errMsg
store.addObject(f)
store.saveChanges()
store.clear()
results = store.fetchObjectsOfClass(Foo)
assert len(results) == 1
f = results[0]
assert f.ri() == 1
assert f.ni() is None
assert f.rs() == 'a'
assert f.ns() is None
return
from MiscUtils.DataTable import DataTable
dataSource = '''
b:int,i:int,l:long,f:float,s:string
0,0,0,0,0
0,0,0,0.0,0.0
1,1,1,1,a
0,-1,8589934592,-3.14,'x'
'''
data = DataTable()
data.readString(dataSource)
for values in data:
print values
t = Thing()
t.setB(values['b'])
t.setI(values['i'])
t.setL(values['l'])
t.setF(values['f'])
t.setS(values['s'])
store.addObject(t)
store.saveChanges()
# Try an immediate fetch
results = store.fetchObjectsOfClass(Thing)
assert len(results) == 1
# This tests the uniquing feature of MiddleKit:
assert id(results[0]) == id(t)
# Clear the store's in memory objects and try a fetch again
store.clear()
results = store.fetchObjectsOfClass(Thing)
assert len(results) == 1
assert results[0].allAttrs() == t.allAttrs()
# Make sure what we got from the store is what we put in
assert t.b() == values['b']
assert t.i() == values['i']
assert t.l() == values['l']
assert t.f() == values['f']
assert t.s() == values['s']
# Reset
store.clear()
store.executeSQLTransaction('delete from Thing;')
del t
|