def test(store):
	from Thing import Thing
	from Person import Person
	from MiscUtils.DataTable import DataTable

	dataSource = '''
b:int,i:int,l:long,f:float,s:string,d:int
0,0,0,0,0,0
0,0,0,0.0,0.0,0
1,1,1,1,a,0
0,-1,8589934592,-3.14,'x',0
'''

	data = DataTable()
	data.readString(dataSource)

	for values in data:
		print values

		t = Thing()
		for attr in list('bilfsd'):
			t._set(attr, values[attr])

		store.addObject(t)
		store.saveChanges()

		# Try an immediate fetch
		results = store.fetchObjectsOfClass(Thing)
		assert len(results)==1, 'len=%s, results=%s' % (len(results), results)
		# 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('bilfsd'):
			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;')
