Exemplo n.º 1
0
    def test_object_links_1(self):
        O2 = private.create_object_factory(
            id='property',
            lb='link-property',
            c='property'
        )

        O1 = private.create_object_factory(
            id='property',
            o2s='link'
        )

        o2_1 = O2(1, 'linkprop o2 1', 3)
        o2_2 = O2(4, 'linkprop o2 2', 6)
        o1 = O1(2, edgedb.Set((o2_1, o2_2)))

        linkset = o1['o2s']
        self.assertEqual(len(linkset), 2)
        self.assertEqual(linkset, o1['o2s'])
        self.assertEqual(hash(linkset), hash(o1['o2s']))
        self.assertEqual(
            repr(linkset),
            "LinkSet(name='o2s', source_id=2, target_ids={1, 4})")

        link1 = linkset[0]
        self.assertIs(link1.source, o1)
        self.assertIs(link1.target, o2_1)
        self.assertEqual(
            repr(link1),
            "Link(name='o2s', source_id=2, target_id=1)")
        self.assertEqual(set(dir(link1)), {'target', 'source', 'lb'})

        link2 = linkset[1]
        self.assertIs(link2.source, o1)
        self.assertIs(link2.target, o2_2)

        self.assertNotEqual(link1, link2)

        self.assertEqual(list(linkset), [link1, link2])
        self.assertEqual([l for l in linkset], [link1, link2])

        self.assertNotEqual(link1, link2)

        self.assertEqual(link1.lb, 'linkprop o2 1')
        self.assertEqual(link2.lb, 'linkprop o2 2')

        with self.assertRaises(AttributeError):
            link2.aaaa
Exemplo n.º 2
0
    def test_recorddesc_3(self):
        f = private.create_object_factory(
            id={'property', 'implicit'},
            lb='link-property',
            c='property',
            d='link',
        )

        o = f(1, 2, 3, 4)

        desc = private.get_object_descriptor(o)
        self.assertEqual(set(dir(desc)), set(('id', 'lb', 'c', 'd')))

        self.assertTrue(desc.is_linkprop('lb'))
        self.assertFalse(desc.is_linkprop('id'))
        self.assertFalse(desc.is_linkprop('c'))
        self.assertFalse(desc.is_linkprop('d'))

        self.assertFalse(desc.is_link('lb'))
        self.assertFalse(desc.is_link('id'))
        self.assertFalse(desc.is_link('c'))
        self.assertTrue(desc.is_link('d'))

        self.assertFalse(desc.is_implicit('lb'))
        self.assertTrue(desc.is_implicit('id'))
        self.assertFalse(desc.is_implicit('c'))
        self.assertFalse(desc.is_implicit('d'))

        self.assertEqual(desc.get_pos('lb'), 1)
        self.assertEqual(desc.get_pos('id'), 0)
        self.assertEqual(desc.get_pos('c'), 2)
        self.assertEqual(desc.get_pos('d'), 3)
Exemplo n.º 3
0
    def test_object_1(self):
        f = private.create_object_factory(id='property',
                                          lb='link-property',
                                          c='property')

        o = f(1, 2, 3)

        self.assertEqual(repr(o), 'Object{id := 1, @lb := 2, c := 3}')

        self.assertEqual(o.id, 1)
        self.assertEqual(o.c, 3)

        with self.assertRaises(AttributeError):
            o.lb

        with self.assertRaises(AttributeError):
            o.z

        with self.assertRaises(TypeError):
            len(o)

        with self.assertRaises(KeyError):
            o[0]

        with self.assertRaises(TypeError):
            o['id']

        self.assertEqual(set(dir(o)), {'id', 'c'})
Exemplo n.º 4
0
 def test_object_5(self):
     f = private.create_object_factory(
         a='property',
         lb='link-property',
         c='property'
     )
     with self.assertRaisesRegex(ValueError, "without 'id' field"):
         f(1, 2, 3)
Exemplo n.º 5
0
    def test_object_3(self):
        f = private.create_object_factory(id='property', c='link')
        o = f(1, [])

        o.c.append(o)
        self.assertEqual(repr(o), 'Object{id := 1, c := [Object{...}]}')

        with self.assertRaisesRegex(TypeError, 'unhashable'):
            hash(o)
Exemplo n.º 6
0
    def test_object_links_4(self):
        User = private.create_object_factory(
            id='property',
            friend='link',
        )

        u = User(1, None)

        with self.assertRaisesRegex(KeyError,
                                    "link 'error_key' does not exist"):
            u['error_key']
Exemplo n.º 7
0
    def test_object_6(self):
        User = private.create_object_factory(
            id='property',
            name='property',
        )

        u = User(1, 'user1')

        with self.assertRaisesRegex(
                TypeError, "property 'name' should be "
                "accessed via dot notation"):
            u['name']
Exemplo n.º 8
0
    def test_object_4(self):
        f = private.create_object_factory(id={'property', 'implicit'},
                                          lb='link-property',
                                          c='property')

        o1 = f(1, 'aa', 'ba')
        o2 = f(1, 'ab', 'bb')
        o3 = f(3, 'ac', 'bc')

        self.assertEqual(o1, o2)
        self.assertNotEqual(o1, o3)
        self.assertLess(o1, o3)
        self.assertGreater(o3, o2)
Exemplo n.º 9
0
    def test_set_6(self):
        f = private.create_object_factory(id={'property', 'implicit'},
                                          lb='link-property',
                                          c='property')

        o1 = f(1, 'aa', edgedb.Set([1, 2, 3]))
        o2 = f(1, 'ab', edgedb.Set([1, 2, 4]))
        o3 = f(3, 'ac', edgedb.Set([5, 5, 5, 5]))

        self.assertEqual(edgedb.Set([o1, o2, o3]), edgedb.Set([o2, o3, o1]))

        self.assertEqual(edgedb.Set([o1, o3]), edgedb.Set([o2, o3]))

        self.assertNotEqual(edgedb.Set([o1, o1]), edgedb.Set([o2, o3]))
Exemplo n.º 10
0
    def test_object_2(self):
        f = private.create_object_factory(id={'property', 'implicit'},
                                          lb='link-property',
                                          c='property')

        o = f(1, 2, 3)

        self.assertEqual(repr(o), 'Object{@lb := 2, c := 3}')

        self.assertEqual(hash(o), hash(f(1, 2, 3)))
        self.assertNotEqual(hash(o), hash(f(1, 2, 'aaaa')))
        self.assertNotEqual(hash(o), hash((1, 2, 3)))

        self.assertEqual(set(dir(o)), {'id', 'c'})
Exemplo n.º 11
0
    def test_object_links_2(self):
        User = private.create_object_factory(
            id='property',
            friends='link',
            enemies='link',
        )

        u1 = User(1, edgedb.Set([]), edgedb.Set([]))
        u2 = User(2, edgedb.Set([]), edgedb.Set([]))
        u3 = User(3, edgedb.Set([]), edgedb.Set([]))
        u4 = User(4, edgedb.Set([u1, u2]), edgedb.Set([u1, u2]))
        u5 = User(5, edgedb.Set([u1, u3]), edgedb.Set([u1, u2]))

        self.assertNotEqual(u4['friends'], u4['enemies'])
        self.assertNotEqual(u4['enemies'], u5['enemies'])

        self.assertEqual(set(dir(u1)), {'id', 'friends', 'enemies'})
Exemplo n.º 12
0
    def test_recorddesc_4(self):
        f = private.create_object_factory(
            id={'property', 'implicit'},
            lb='link-property',
            c='property',
            d='link',
        )

        o = f(1, 2, 3, 4)
        intro = introspect.introspect_object(o)

        self.assertEqual(intro.pointers, (
            ('id', introspect.PointerKind.PROPERTY, True),
            ('c', introspect.PointerKind.PROPERTY, False),
            ('d', introspect.PointerKind.LINK, False),
        ))

        # clear cache so that tests in refcount mode don't freak out.
        introspect._introspect_object_desc.cache_clear()
Exemplo n.º 13
0
    def test_object_links_3(self):
        User = private.create_object_factory(
            id='property',
            friend='link',
        )

        u1 = User(1, None)
        u2 = User(2, u1)
        u3 = User(3, edgedb.Set([]))

        self.assertEqual(set(dir(u2['friend'])), {'source', 'target'})

        self.assertIs(u2['friend'].target, u1)

        self.assertIsNone(u1['friend'])

        self.assertEqual(len(u3['friend']), 0)
        self.assertEqual(repr(u3['friend']),
                         "LinkSet(name='friend', source_id=3, target_ids={})")

        self.assertEqual(repr(u2['friend']),
                         "Link(name='friend', source_id=2, target_id=1)")