def test_set_default_field_from_wire(self):
     doc = DocWithoutFields()
     doc = write_read(doc, DocWithoutFields, DocWithDefaultField)
     self.assertEquals(doc.field, FieldWithDefault.DEFAULT_VALUE)
     doc.field = b'value'
     doc = write_read(doc, DocWithDefaultField)
     self.assertEquals(doc.field, b'value')
 def test_set_default_field_from_wire(self):
   doc = DocWithoutFields()
   doc = write_read(doc, DocWithoutFields, DocWithDefaultField)
   self.assertEquals(doc.field, FieldWithDefault.DEFAULT_VALUE)
   doc.field = b'value'
   doc = write_read(doc, DocWithDefaultField)
   self.assertEquals(doc.field, b'value')
  def test_sorting(self):
    d = Doc()

    f1 = d.foos.create(label=b'1')
    f2 = d.foos.create(label=b'2')
    f3 = d.foos.create(label=b'3')
    f4 = d.foos.create(label=b'4')
    d.foos.sort(key=lambda f: f.label, reverse=True)
    f1.other = f3
    f2.other = f1
    f3.other = f2
    f4.other = f4

    d = write_read(d, Doc)

    self.assertEqual(len(d.foos), 4)
    f1, f2, f3, f4 = d.foos
    self.assertEqual(f1.label, b'4')
    self.assertEqual(f2.label, b'3')
    self.assertEqual(f3.label, b'2')
    self.assertEqual(f4.label, b'1')
    self.assertIs(f1.other, f1)
    self.assertIs(f2.other, f3)
    self.assertIs(f3.other, f4)
    self.assertIs(f4.other, f2)
    def test_sorting(self):
        d = Doc()

        f1 = d.foos.create(label=b"1")
        f2 = d.foos.create(label=b"2")
        f3 = d.foos.create(label=b"3")
        f4 = d.foos.create(label=b"4")
        d.foos.sort(key=lambda f: f.label, reverse=True)
        f1.other = f3
        f2.other = f1
        f3.other = f2
        f4.other = f4

        d = write_read(d, Doc)

        self.assertEqual(len(d.foos), 4)
        f1, f2, f3, f4 = d.foos
        self.assertEqual(f1.label, b"4")
        self.assertEqual(f2.label, b"3")
        self.assertEqual(f3.label, b"2")
        self.assertEqual(f4.label, b"1")
        self.assertIs(f1.other, f1)
        self.assertIs(f2.other, f3)
        self.assertIs(f3.other, f4)
        self.assertIs(f4.other, f2)
  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_store_serial(self):
        d1 = Doc1()
        d1.xs.create(foo=1, bar=b"hello")
        d1.xs.create(foo=10, bar=b"world")
        d1.xs.create(foo=5)
        d1.xs.create(bar=b"bar")

        d3 = write_read(d1, Doc1, Doc3)
        self.assertFalse(hasattr(d3, "xs"))
        self.assertEqual(len(d3.exes), len(d1.xs))
        for x, y in zip(d3.exes, d1.xs):
            self.assertEqual(x.foo, y.foo)
            self.assertEqual(x.bar, y.bar)

        d1 = write_read(d3, Doc3, Doc1)
        self.assertFalse(hasattr(d1, "exes"))
 def test_pointer(self):
   doc = DocWithAnnotsAndPointer()
   doc.annots.create()
   self.assertEquals(len(doc.annots), 1)
   doc.special_annot = doc.annots[0]
   doc = write_read(doc, DocWithAnnotsAndPointer)
   self.assertIs(doc.special_annot, doc.annots[0])
    def test_store_serial(self):
        d1 = Doc1()
        d1.xs.create(foo=1, bar=b'hello')
        d1.xs.create(foo=10, bar=b'world')
        d1.xs.create(foo=5)
        d1.xs.create(bar=b'bar')

        d3 = write_read(d1, Doc1, Doc3)
        self.assertFalse(hasattr(d3, 'xs'))
        self.assertEqual(len(d3.exes), len(d1.xs))
        for x, y in zip(d3.exes, d1.xs):
            self.assertEqual(x.foo, y.foo)
            self.assertEqual(x.bar, y.bar)

        d1 = write_read(d3, Doc3, Doc1)
        self.assertFalse(hasattr(d1, 'exes'))
Beispiel #9
0
 def test_pointer(self):
     doc = DocWithAnnotsAndPointer()
     doc.annots.create()
     self.assertEquals(len(doc.annots), 1)
     doc.special_annot = doc.annots[0]
     doc = write_read(doc, DocWithAnnotsAndPointer)
     self.assertIs(doc.special_annot, doc.annots[0])
  def test(self):
    d = Doc2()
    d.foo = 1
    d.bar = 2

    d = write_read(d, Doc2)

    self.assertEqual(d.foo, 1)
    self.assertEqual(d.bar, 2)
  def test_store_empty(self):
    doc = Doc()
    doc.strings.create(utf8=u'', store_empty=u'')
    self.assertTrue(isinstance(doc.strings[0].utf8, six.text_type))
    self.assertTrue(isinstance(doc.strings[0].store_empty, six.text_type))

    doc = write_read(doc, Doc)
    self.assertIsNone(doc.strings[0].utf8)
    self.assertTrue(isinstance(doc.strings[0].store_empty, six.text_type))
Beispiel #12
0
    def test(self):
        d = Doc2()
        d.foo = 1
        d.bar = 2

        d = write_read(d, Doc2)

        self.assertEqual(d.foo, 1)
        self.assertEqual(d.bar, 2)
Beispiel #13
0
  def test_example(self):
    #    a
    #  b   c
    #  d  e f
    d = Doc()

    n1 = d.nodes3.create(label='1')
    n1.parent = n1

    nA = d.nodes2.create(label='A')
    nB = d.nodes2.create(label='B', parent=nA)
    nC = d.nodes2.create(label='C', parent=nB)
    nD = d.nodes2.create(label='D', parent=nC)
    nA.other = nD
    nB.other = nD
    nC.other = nD
    nD.other = nD

    na = d.nodes1.create(label='a', other=nD)
    nb = d.nodes1.create(label='b', parent=na, other=nC)
    nc = d.nodes1.create(label='c', parent=na, other=nB)
    nd = d.nodes1.create(label='d', parent=nb, other=nA)
    ne = d.nodes1.create(label='e', parent=nc, other=nD)
    nf = d.nodes1.create(label='f', parent=nc, other=nC)

    self.assertEqual(len(d.nodes1), 6)
    self.assertEqual(len(d.nodes2), 4)
    self.assertEqual(len(d.nodes3), 1)
    self.assertIsNone(na.parent)
    self.assertIs(nb.parent, na)
    self.assertIs(nc.parent, na)
    self.assertIs(nd.parent, nb)
    self.assertIs(ne.parent, nc)
    self.assertIs(nf.parent, nc)

    d = write_read(d, Doc)

    self.assertEqual(len(d.nodes1), 6)
    self.assertEqual(len(d.nodes2), 4)
    self.assertEqual(len(d.nodes3), 1)
    na, nb, nc, nd, ne, nf = d.nodes1
    nA, nB, nC, nD = d.nodes2
    n1, = d.nodes3
    self.assertIsNone(na.parent)
    self.assertIs(nb.parent, na)
    self.assertIs(nc.parent, na)
    self.assertIs(nd.parent, nb)
    self.assertIs(ne.parent, nc)
    self.assertIs(nf.parent, nc)
    self.assertIs(na.other, nD)
    self.assertIs(nb.other, nC)
    self.assertIs(nc.other, nB)
    self.assertIs(nd.other, nA)
    self.assertIs(ne.other, nD)
    self.assertIs(nf.other, nC)
    self.assertIs(n1.parent, n1)
    self.assertIsNone(n1.other)
    def test_store_empty(self):
        doc = Doc()
        doc.strings.create(utf8=u'', store_empty=u'')
        self.assertTrue(isinstance(doc.strings[0].utf8, six.text_type))
        self.assertTrue(isinstance(doc.strings[0].store_empty, six.text_type))

        doc = write_read(doc, Doc)
        self.assertIsNone(doc.strings[0].utf8)
        self.assertTrue(isinstance(doc.strings[0].store_empty, six.text_type))
    def test_example(self):
        #    a
        #  b   c
        #  d  e f
        d = Doc()

        n1 = d.nodes3.create(label="1")
        n1.parent = n1

        nA = d.nodes2.create(label="A")
        nB = d.nodes2.create(label="B", parent=nA)
        nC = d.nodes2.create(label="C", parent=nB)
        nD = d.nodes2.create(label="D", parent=nC)
        nA.other = nD
        nB.other = nD
        nC.other = nD
        nD.other = nD

        na = d.nodes1.create(label="a", other=nD)
        nb = d.nodes1.create(label="b", parent=na, other=nC)
        nc = d.nodes1.create(label="c", parent=na, other=nB)
        nd = d.nodes1.create(label="d", parent=nb, other=nA)
        ne = d.nodes1.create(label="e", parent=nc, other=nD)
        nf = d.nodes1.create(label="f", parent=nc, other=nC)

        self.assertEqual(len(d.nodes1), 6)
        self.assertEqual(len(d.nodes2), 4)
        self.assertEqual(len(d.nodes3), 1)
        self.assertIsNone(na.parent)
        self.assertIs(nb.parent, na)
        self.assertIs(nc.parent, na)
        self.assertIs(nd.parent, nb)
        self.assertIs(ne.parent, nc)
        self.assertIs(nf.parent, nc)

        d = write_read(d, Doc)

        self.assertEqual(len(d.nodes1), 6)
        self.assertEqual(len(d.nodes2), 4)
        self.assertEqual(len(d.nodes3), 1)
        na, nb, nc, nd, ne, nf = d.nodes1
        nA, nB, nC, nD = d.nodes2
        n1, = d.nodes3
        self.assertIsNone(na.parent)
        self.assertIs(nb.parent, na)
        self.assertIs(nc.parent, na)
        self.assertIs(nd.parent, nb)
        self.assertIs(ne.parent, nc)
        self.assertIs(nf.parent, nc)
        self.assertIs(na.other, nD)
        self.assertIs(nb.other, nC)
        self.assertIs(nc.other, nB)
        self.assertIs(nd.other, nA)
        self.assertIs(ne.other, nD)
        self.assertIs(nf.other, nC)
        self.assertIs(n1.parent, n1)
        self.assertIsNone(n1.other)
  def test(self):
    d = Doc()
    d.ann1s.create(foo=b'a')
    d.ann2s.create(foo=b'z', bar=1)

    d = write_read(d, Doc)

    self.assertEqual(len(d.ann1s), 1)
    self.assertEqual(len(d.ann2s), 1)
    self.assertEqual(d.ann1s[0].foo, b'a')
    self.assertEqual(d.ann2s[0].foo, b'z')
    self.assertEqual(d.ann2s[0].bar, 1)
Beispiel #17
0
    def test(self):
        d = Doc()
        d.ann1s.create(foo=b'a')
        d.ann2s.create(foo=b'z', bar=1)

        d = write_read(d, Doc)

        self.assertEqual(len(d.ann1s), 1)
        self.assertEqual(len(d.ann2s), 1)
        self.assertEqual(d.ann1s[0].foo, b'a')
        self.assertEqual(d.ann2s[0].foo, b'z')
        self.assertEqual(d.ann2s[0].bar, 1)
  def test_none_and_notnone(self):
    schema = Doc.schema()

    doc1 = Doc()
    doc1.events.create(name='Some event', date=datetime.datetime(year=1990, month=12, day=2))
    doc1.events.create(name='Another event')
    self.assertIsNotNone(doc1.events[0].date)
    self.assertIsNone(doc1.events[1].date)

    doc2 = write_read(doc1, schema)
    self.assertIsNotNone(doc2.events[0].date)
    self.assertIsNone(doc2.events[1].date)
    self.assertEqual(doc1.events[0].date, doc2.events[0].date)
  def test_deletion_bad(self):
    d = Doc()

    f1 = d.foos.create(label=b'1')
    f2 = d.foos.create(label=b'2')
    f3 = d.foos.create(label=b'3')
    f4 = d.foos.create(label=b'4')
    f1.other = f4
    f2.other = f4
    f3.other = f4
    del d.foos[3]

    R = 'Cannot serialize pointer to .* as it is not not in any store'
    self.assertRaisesRegexp(WriterException, R, lambda: write_read(d, Doc))
    def test_deletion_bad(self):
        d = Doc()

        f1 = d.foos.create(label=b"1")
        f2 = d.foos.create(label=b"2")
        f3 = d.foos.create(label=b"3")
        f4 = d.foos.create(label=b"4")
        f1.other = f4
        f2.other = f4
        f3.other = f4
        del d.foos[3]

        R = "Cannot serialize pointer to .* as it is not not in any store"
        self.assertRaisesRegexp(WriterException, R, lambda: write_read(d, Doc))
    def test_none_and_notnone(self):
        schema = Doc.schema()

        doc1 = Doc()
        doc1.events.create(name='Some event',
                           date=datetime.datetime(year=1990, month=12, day=2))
        doc1.events.create(name='Another event')
        self.assertIsNotNone(doc1.events[0].date)
        self.assertIsNone(doc1.events[1].date)

        doc2 = write_read(doc1, schema)
        self.assertIsNotNone(doc2.events[0].date)
        self.assertIsNone(doc2.events[1].date)
        self.assertEqual(doc1.events[0].date, doc2.events[0].date)
  def test_deletion(self):
    d = Doc()

    d.foos.create(label=b'1')
    d.foos.create(label=b'2')
    d.foos.create(label=b'3')
    d.foos.create(label=b'4')
    del d.foos[2:4]

    d = write_read(d, Doc)

    self.assertEqual(len(d.foos), 2)
    f1, f2 = d.foos
    self.assertEqual(f1.label, b'1')
    self.assertEqual(f2.label, b'2')
    def test_deletion(self):
        d = Doc()

        d.foos.create(label=b"1")
        d.foos.create(label=b"2")
        d.foos.create(label=b"3")
        d.foos.create(label=b"4")
        del d.foos[2:4]

        d = write_read(d, Doc)

        self.assertEqual(len(d.foos), 2)
        f1, f2 = d.foos
        self.assertEqual(f1.label, b"1")
        self.assertEqual(f2.label, b"2")
    def test_none_and_notnone(self):
        schema = Doc.schema()

        U = u'⁆foo'
        doc = Doc()
        doc.strings.create(utf8=U, utf32=U)
        doc.strings.create()
        self.assertTrue(isinstance(doc.strings[0].utf8, six.text_type))
        self.assertTrue(isinstance(doc.strings[0].utf32, six.text_type))

        doc = write_read(doc, schema)
        self.assertEqual(len(doc.strings), 2)
        self.assertTrue(isinstance(doc.strings[0].utf8, six.text_type))
        self.assertTrue(isinstance(doc.strings[0].utf32, six.text_type))
        self.assertEqual(doc.strings[0].utf8, U)
        self.assertEqual(doc.strings[0].utf32, U)
  def test_none_and_notnone(self):
    schema = Doc.schema()

    U = u'⁆foo'
    doc = Doc()
    doc.strings.create(utf8=U, utf32=U)
    doc.strings.create()
    self.assertTrue(isinstance(doc.strings[0].utf8, six.text_type))
    self.assertTrue(isinstance(doc.strings[0].utf32, six.text_type))

    doc = write_read(doc, schema)
    self.assertEqual(len(doc.strings), 2)
    self.assertTrue(isinstance(doc.strings[0].utf8, six.text_type))
    self.assertTrue(isinstance(doc.strings[0].utf32, six.text_type))
    self.assertEqual(doc.strings[0].utf8, U)
    self.assertEqual(doc.strings[0].utf32, U)
 def test_various(self):
   doc = DocWithField()
   doc = write_read(doc, DocWithField)
   doc.field = b'foo'
   doc = write_read(doc, DocWithField, DocWithoutFields)
   doc = write_read(doc, DocWithoutFields, DocWithAnnotsAndPointer)
   doc.annots.create()
   doc.special_annot = doc.annots[-1]
   doc = write_read(doc, DocWithAnnotsAndPointer, DocWithoutFields)
   doc = write_read(doc, DocWithoutFields, DocWithField)
   self.assertEquals(doc.field, b'foo')
   doc = write_read(doc, DocWithField, DocWithoutFields)
   doc = write_read(doc, DocWithoutFields, DocWithAnnotsAndPointer)
   self.assertEquals(len(doc.annots), 1)
   self.assertEquals(doc.special_annot, doc.annots[0])
Beispiel #27
0
 def test_various(self):
     doc = DocWithField()
     doc = write_read(doc, DocWithField)
     doc.field = b'foo'
     doc = write_read(doc, DocWithField, DocWithoutFields)
     doc = write_read(doc, DocWithoutFields, DocWithAnnotsAndPointer)
     doc.annots.create()
     doc.special_annot = doc.annots[-1]
     doc = write_read(doc, DocWithAnnotsAndPointer, DocWithoutFields)
     doc = write_read(doc, DocWithoutFields, DocWithField)
     self.assertEquals(doc.field, b'foo')
     doc = write_read(doc, DocWithField, DocWithoutFields)
     doc = write_read(doc, DocWithoutFields, DocWithAnnotsAndPointer)
     self.assertEquals(len(doc.annots), 1)
     self.assertEquals(doc.special_annot, doc.annots[0])
    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)
    def test_doc1_doc1(self):
        d1 = Doc1(name=b"test.txt")
        self.assertEqual(len(d1._dr_stores), 1)
        self.assertIn("xs", d1._dr_stores)

        self.assertTrue(hasattr(d1, "name"))
        self.assertFalse(hasattr(d1, "filename"))
        self.assertEqual(d1.name, b"test.txt")

        d1.xs.create(foo=1, bar=b"hello")
        d1.xs.create(foo=10, bar=b"world")
        d1.xs.create(foo=5)
        d1.xs.create(bar=b"bar")
        self.assertEqual(len(d1.xs), 4)
        self.assertEqual(len([x for x in d1.xs]), 4)

        for x in d1.xs:
            self.assertEqual(len(x._dr_fields), 2)
            self.assertEqual(len(x._dr_stores), 0)
            self.assertTrue(hasattr(x, "foo"))
            self.assertTrue(hasattr(x, "bar"))
            self.assertFalse(hasattr(x, "chicken"))

        d2 = write_read(d1, Doc1)
        self.assertIsNot(d1, d2)
        self.assertIsInstance(d2, Doc1)

        self.assertTrue(hasattr(d2, "name"))
        self.assertFalse(hasattr(d2, "filename"))
        self.assertEqual(d2.name, b"test.txt")

        self.assertEqual(len(d2._dr_stores), 1)
        self.assertIn("xs", d2._dr_stores)
        self.assertEqual(len(d1.xs), len(d2.xs))

        for x in d2.xs:
            self.assertEqual(len(x._dr_fields), 2)
            self.assertEqual(len(x._dr_stores), 0)
            self.assertTrue(hasattr(x, "foo"))
            self.assertTrue(hasattr(x, "bar"))
            self.assertFalse(hasattr(x, "chicken"))
    def test_doc1_doc1(self):
        d1 = Doc1(name=b'test.txt')
        self.assertEqual(len(d1._dr_stores), 1)
        self.assertIn('xs', d1._dr_stores)

        self.assertTrue(hasattr(d1, 'name'))
        self.assertFalse(hasattr(d1, 'filename'))
        self.assertEqual(d1.name, b'test.txt')

        d1.xs.create(foo=1, bar=b'hello')
        d1.xs.create(foo=10, bar=b'world')
        d1.xs.create(foo=5)
        d1.xs.create(bar=b'bar')
        self.assertEqual(len(d1.xs), 4)
        self.assertEqual(len([x for x in d1.xs]), 4)

        for x in d1.xs:
            self.assertEqual(len(x._dr_fields), 2)
            self.assertEqual(len(x._dr_stores), 0)
            self.assertTrue(hasattr(x, 'foo'))
            self.assertTrue(hasattr(x, 'bar'))
            self.assertFalse(hasattr(x, 'chicken'))

        d2 = write_read(d1, Doc1)
        self.assertIsNot(d1, d2)
        self.assertIsInstance(d2, Doc1)

        self.assertTrue(hasattr(d2, 'name'))
        self.assertFalse(hasattr(d2, 'filename'))
        self.assertEqual(d2.name, b'test.txt')

        self.assertEqual(len(d2._dr_stores), 1)
        self.assertIn('xs', d2._dr_stores)
        self.assertEqual(len(d1.xs), len(d2.xs))

        for x in d2.xs:
            self.assertEqual(len(x._dr_fields), 2)
            self.assertEqual(len(x._dr_stores), 0)
            self.assertTrue(hasattr(x, 'foo'))
            self.assertTrue(hasattr(x, 'bar'))
            self.assertFalse(hasattr(x, 'chicken'))
    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_different_doc(self):
        d1 = Doc1()
        d1.xs.create(foo=1, bar=b"hello")
        d1.xs.create(foo=10, bar=b"world")
        d1.xs.create(foo=5)
        d1.xs.create(bar=b"bar")

        d2 = write_read(d1, Doc1, Doc2)
        self.assertIsNot(d1, d2)
        self.assertIsInstance(d2, Doc2)

        self.assertEqual(len(d2._dr_stores), 1)
        self.assertIn("xs", d2._dr_stores)
        self.assertEqual(len(d1.xs), len(d2.xs))

        for x in d2.xs:
            self.assertEqual(len(x._dr_fields), 2)
            self.assertEqual(len(x._dr_stores), 0)
            self.assertTrue(hasattr(x, "foo"))
            self.assertTrue(hasattr(x, "bar"))
            self.assertFalse(hasattr(x, "chicken"))
    def test_different_doc(self):
        d1 = Doc1()
        d1.xs.create(foo=1, bar=b'hello')
        d1.xs.create(foo=10, bar=b'world')
        d1.xs.create(foo=5)
        d1.xs.create(bar=b'bar')

        d2 = write_read(d1, Doc1, Doc2)
        self.assertIsNot(d1, d2)
        self.assertIsInstance(d2, Doc2)

        self.assertEqual(len(d2._dr_stores), 1)
        self.assertIn('xs', d2._dr_stores)
        self.assertEqual(len(d1.xs), len(d2.xs))

        for x in d2.xs:
            self.assertEqual(len(x._dr_fields), 2)
            self.assertEqual(len(x._dr_stores), 0)
            self.assertTrue(hasattr(x, 'foo'))
            self.assertTrue(hasattr(x, 'bar'))
            self.assertFalse(hasattr(x, 'chicken'))
  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)
 def test_same_type(self):
     self.doc.favourite = self.doc.wrong_foos[2]
     with self.assertRaisesRegexp(WriterException, self.WRONG_STORE_MSG):
         write_read(self.doc, Doc)
 def test_different_type(self):
     self.doc.favourite = self.doc.bars[2]
     with self.assertRaisesRegexp(WriterException, self.WRONG_STORE_MSG):
         write_read(self.doc, Doc)
Beispiel #37
0
 def test_null_pointer(self):
     doc = DocWithAnnotsAndPointer()
     doc.annots.create()
     doc.special_annot = None
     doc = write_read(doc, DocWithAnnotsAndPointer)
     self.assertIsNone(doc.special_annot)
 def test_different_type(self):
   self.doc.favourite = self.doc.bars[2]
   with self.assertRaisesRegexp(WriterException, self.WRONG_STORE_MSG):
     write_read(self.doc, Doc)
 def test_null_pointer(self):
   doc = DocWithAnnotsAndPointer()
   doc.annots.create()
   doc.special_annot = None
   doc = write_read(doc, DocWithAnnotsAndPointer)
   self.assertIsNone(doc.special_annot)
 def test_same_type(self):
   self.doc.favourite = self.doc.wrong_foos[2]
   with self.assertRaisesRegexp(WriterException, self.WRONG_STORE_MSG):
     write_read(self.doc, Doc)