def test_pointer(self): A = dr.make_ann('A', 'x', 'y', z=dr.SelfPointer(), __module__='SerialTest.test_pointer') B = dr.make_ann('B', p=dr.Pointer(A), __module__='SerialTest.test_pointer') class Doc(dr.Doc): sa = dr.Store(A) sb = dr.Store(B) class Meta: name = 'SerialTest.test_pointer.Doc' d = Doc() a1 = d.sa.create(x=1, y=2, z=None) a2 = d.sa.create(x=11, y=21, z=a1) d.sb.create(p=None) d.sb.create(p=a2) d = write_read(d, Doc) self.assertEqual(len(d.sa), 2) self.assertEqual(len(d.sb), 2) a1, a2 = d.sa b1, b2 = d.sb self.assertEqual(a1.x, 1) self.assertEqual(a1.y, 2) self.assertIsNone(a1.z) self.assertEqual(a2.x, 11) self.assertEqual(a2.y, 21) self.assertIs(a2.z, a1) self.assertIsNone(b1.p) self.assertIs(b2.p, a2)
def test_define(self): Foo = dr.make_ann('Foo', 'a', 'b', 'c', 'd', e=dr.Slice(), __module__='SerialTest.test_define') self.assertEqual(len(Foo._dr_fields), 5) self.assertIn('a', Foo._dr_fields) self.assertIsInstance(Foo._dr_fields['a'], dr.Field) self.assertIn('b', Foo._dr_fields) self.assertIsInstance(Foo._dr_fields['b'], dr.Field) self.assertIn('c', Foo._dr_fields) self.assertIsInstance(Foo._dr_fields['c'], dr.Field) self.assertIn('d', Foo._dr_fields) self.assertIsInstance(Foo._dr_fields['d'], dr.Field) self.assertIn('e', Foo._dr_fields) self.assertIsInstance(Foo._dr_fields['e'], dr.Slice)
def test_use(self): Foo = dr.make_ann('Foo', 'a', 'b', 'c', 'd', e=dr.Slice(), __module__='SerialTest.test_use') class Doc(dr.Doc): foos = dr.Store(Foo) class Meta: name = 'SerialTest.test_use.Doc' d = Doc() d.foos.create(a=1, b=2, c=3, d=4, e=None) d.foos.create(a=4, b=3, c=2, d=1, e=slice(10, 21)) d.foos.create(x='y') self.assertEqual(len(d.foos), 3) d = write_read(d, Doc) self.assertEqual(len(d.foos), 3) f1, f2, f3 = d.foos self.assertEqual(f1.a, 1) self.assertEqual(f1.b, 2) self.assertEqual(f1.c, 3) self.assertEqual(f1.d, 4) self.assertIsNone(f1.e) self.assertEqual(f2.a, 4) self.assertEqual(f2.b, 3) self.assertEqual(f2.c, 2) self.assertEqual(f2.d, 1) self.assertEqual(f2.e, slice(10, 21)) self.assertIsNone(f3.a) self.assertIsNone(f3.b) self.assertIsNone(f3.c) self.assertIsNone(f3.d) self.assertIsNone(f3.e)