def test2(self): 'data object with reference and referenceset' orm = self.orm struct = do.Structure(shape=do.Cylinder(r=3, h=10), atoms=[do.Atom(), do.Atom('C')]) orm.save(struct) struct1 = do.Structure(shape=None, atoms=[do.Atom(), do.Atom('C')]) orm.save(struct1) struct2 = orm.load(do.Structure, id=orm.object2record(struct).id) struct2.atoms = [do.Atom('He')] struct2.shape = None orm.save(struct2) struct2.shape = do.Box(x=1, y=1, z=1) orm.save(struct2) sample = do.Sample() sample.shape = do.Cylinder(r=1, h=5) orm.save(sample) # getObjectTypeFromName self.assertEqual(orm.getObjectTypeFromName('Sample'), do.Sample) self.orm2.registerObjectType(do.Cylinder) sample2 = self.orm2.load(do.Sample, id=orm.object2record(sample).id) self.assertEqual(sample2.shape.__class__, do.Cylinder) self.assertEqual(sample2.shape.r, sample.shape.r) return
def test3aa(self): 'object with reference set: update reference and referenceset' import dataobjects as do struct = do.Structure(shape=do.Cylinder(r=3,h=10), atoms=[do.Atom(), do.Atom('C')]) # orm manager orm = self.ormManager() orm.save(struct) # struct.shape = do.Box(x=1, y=1, z=1) struct.atoms[0] = do.Atom('C') orm.save(struct) # load from db and compare db = orm.db AtomTable = orm.object2record.object2dbtable(do.Atom) rs = db.query(AtomTable).all() symbols = [r.symbol for r in rs] self.assertEqual(symbols, ['C', 'C']) CylinderTable = orm.object2record.object2dbtable(do.Cylinder) self.assertEqual(db.query(CylinderTable).count(), 0) BoxTable = orm.object2record.object2dbtable(do.Box) self.assertEqual(db.query(BoxTable).count(), 1) # None for reference struct.shape = None orm.save(struct) # db = orm.db db.destroyAllTables() return
def test3a(self): 'object with reference set: update' import dataobjects as do struct = do.Structure(shape=do.Cylinder(r=3,h=10), atoms=[do.Atom(), do.Atom('C')]) # orm manager orm = self.ormManager() orm.save(struct) # load from db and check db = orm.db AtomTable = orm.object2record.object2dbtable(do.Atom) rs = db.query(AtomTable).all() symbols = [r.symbol for r in rs] self.assertEqual(len(symbols), 2) self.assert_('H' in symbols) self.assert_('C' in symbols) # struct.atoms[0].symbol = 'C' orm.save(struct) # load from db and compare db = orm.db AtomTable = orm.object2record.object2dbtable(do.Atom) rs = db.query(AtomTable).all() symbols = [r.symbol for r in rs] self.assertEqual(symbols, ['C', 'C']) # db = orm.db db.destroyAllTables() return
def test3(self): 'object with reference set' import dataobjects as do struct = do.Structure(shape=do.Cylinder(r=3,h=10), atoms=[do.Atom(), do.Atom('C')]) # orm manager orm = self.ormManager() orm.save(struct) # load from db and compare db = orm.db r = orm.object2record(struct) id = r.id r = db.query(r.__class__).filter_by(id=id).one() shape = r.shape.dereference(db) self.assertEqual(shape.r, struct.shape.r) self.assertEqual(shape.h, struct.shape.h) # reference to "None" struct1 = do.Structure(shape=None, atoms=[do.Atom(), do.Atom('C')]) orm.save(struct1) # load from db and compare r1 = orm.object2record(struct1) self.assertEqual(r1.shape and r1.shape.id, None) # db = orm.db db.destroyAllTables() return
def test3b(self): 'object with reference set: destroy' import dataobjects as do struct = do.Structure(shape=do.Cylinder(r=3,h=10), atoms=[do.Atom(), do.Atom('C')]) # orm manager orm = self.ormManager() orm.save(struct) # load from db and compare db = orm.db r = orm.object2record(struct) id = r.id r = db.query(r.__class__).filter_by(id=id).one() shape = r.shape.dereference(db) self.assertEqual(shape.r, struct.shape.r) self.assertEqual(shape.h, struct.shape.h) # destroy orm.destroy(struct) # self.assertEqual(db.query(r.__class__).filter_by(id=id).count(), 0) object2dbtable = orm.object2record.object2dbtable self.assertEqual(db.query(object2dbtable(do.Atom)).count(), 0) self.assertEqual(db.query(object2dbtable(do.Cylinder)).count(), 0) # db = orm.db db.destroyAllTables() return
def test4(self): 'referenceset' import dataobjects as do structure = do.Structure(do.Cylinder(r=3, h=10), [do.Atom(symbol='C')]) # convert to a db record from dsaw.model.visitors.Object2DBRecord import Object2DBRecord o2r = Object2DBRecord() record = o2r(structure) self.assert_(o2r.registry.getRecord(structure.shape)) return