Update of /cvsroot/webware/Webware/MiddleKit/Tests/MKModelInh1.mkmodel
In directory usw-pr-cvs1:/tmp/cvs-serv32556/Tests/MKModelInh1.mkmodel
Added Files:
Classes.csv Samples.csv Settings.config TestEmpty.py
Log Message:
implemented brand new feature: model inheritance.
--- NEW FILE: Classes.csv ---
Class,Attribute,Type,Default,Min,Max
--- NEW FILE: Samples.csv ---
Thing objects,,,,
b,i,l,f,s
1,5,8589934592,3.14,hi
0,-5,-10,3,bye
true,1,1,1,1
false,1,1,1,1
Person objects,,,,
id,firstName,middleName,lastName,
XYZ768,John,,Doe,
ABC987,Jane,L,Doe,
--- NEW FILE: Settings.config ---
{
'Inherit': ['MKBasic'],
}
--- NEW FILE: TestEmpty.py ---
def test():
from Thing import Thing
from Person import Person
from MiddleKit.Run.ObjectStore import Store as store
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()
for attr in list('bilfs'):
t._set(attr, values[attr])
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
for attr in list('bils'):
assert results[0]._get(attr)==values[attr]
different = 0.000001 # @@ 2000-11-25 ce: more work needed on floats
assert abs(results[0]._get('f')-values['f'])<different
# Insert the fetched attributes
t2 = Thing()
for attr in list('bilfs'):
t2._set(attr, results[0]._get(attr))
store.addObject(t2)
store.saveChanges()
results = store.fetchObjectsOfClass(Thing)
assert len(results)==2, 'len=%r' % len(results)
assert results[0].allAttrs()==results[1].allAttrs()
# Reset
store.clear()
store.executeSQL('delete from Thing;')
|