Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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 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