Exemplo n.º 1
0
    def test_sync_basic_datatypes_01(self):
        for _ in range(10):
            self.assertEqual(self.con.query_one('select ()'), ())

            self.assertEqual(self.con.query('select (1,)'),
                             edgedb.Set([(1, )]))

            self.assertEqual(self.con.query_one('select <array<int64>>[]'), [])

            self.assertEqual(self.con.query('select ["a", "b"]'),
                             edgedb.Set([["a", "b"]]))

            self.assertEqual(
                self.con.query('''
                    SELECT {(a := 1 + 1 + 40, world := ("hello", 32)),
                            (a:=1, world := ("yo", 10))};
                '''),
                edgedb.Set([
                    edgedb.NamedTuple(a=42, world=("hello", 32)),
                    edgedb.NamedTuple(a=1, world=("yo", 10)),
                ]))

            with self.assertRaisesRegex(
                    edgedb.InterfaceError,
                    r'query cannot be executed with query_one\('):
                self.con.query_one('SELECT {1, 2}')

            with self.assertRaisesRegex(edgedb.NoDataError,
                                        r'\bquery_one_json\('):
                self.con.query_one_json('SELECT <int64>{}')
Exemplo n.º 2
0
    async def test_async_basic_datatypes_04(self):
        val = await self.con.query_one(
            '''
                SELECT schema::ObjectType {
                    foo := {
                        [(a := 1, b := 2), (a := 3, b := 4)],
                        [(a := 5, b := 6)],
                        <array <tuple<a: int64, b: int64>>>[],
                    }
                } LIMIT 1
            '''
        )

        self.assertEqual(
            val.foo,
            edgedb.Set([
                edgedb.Array([
                    edgedb.NamedTuple(a=1, b=2),
                    edgedb.NamedTuple(a=3, b=4),
                ]),
                edgedb.Array([
                    edgedb.NamedTuple(a=5, b=6),
                ]),
                edgedb.Array([]),
            ]),
        )
Exemplo n.º 3
0
    async def test_async_basic_datatypes_01(self):
        for _ in range(10):
            self.assertEqual(await self.con.query_one('select ()'), ())

            self.assertEqual(await self.con.query('select (1,)'),
                             edgedb.Set([(1, )]))

            async with self.con.transaction(isolation='repeatable_read'):
                self.assertEqual(
                    await self.con.query_one('select <array<int64>>[]'), [])

            self.assertEqual(await self.con.query('select ["a", "b"]'),
                             edgedb.Set([["a", "b"]]))

            self.assertEqual(
                await self.con.query('''
                    SELECT {(a := 1 + 1 + 40, world := ("hello", 32)),
                            (a:=1, world := ("yo", 10))};
                '''),
                edgedb.Set([
                    edgedb.NamedTuple(a=42, world=("hello", 32)),
                    edgedb.NamedTuple(a=1, world=("yo", 10)),
                ]))

            with self.assertRaisesRegex(
                    edgedb.InterfaceError,
                    r'query_one\(\) as it returns a multiset'):
                await self.con.query_one('SELECT {1, 2}')

            with self.assertRaisesRegex(edgedb.NoDataError, r'\bquery_one\('):
                await self.con.query_one('SELECT <int64>{}')
Exemplo n.º 4
0
    async def test_async_basic_datatypes_01(self):
        for _ in range(10):
            self.assertEqual(await self.client.query_single('select ()'), ())

            self.assertEqual(await self.client.query('select (1,)'),
                             edgedb.Set([(1, )]))

            self.assertEqual(await self.client.query('select ["a", "b"]'),
                             edgedb.Set([["a", "b"]]))

            self.assertEqual(
                await self.client.query('''
                    SELECT {(a := 1 + 1 + 40, world := ("hello", 32)),
                            (a:=1, world := ("yo", 10))};
                '''),
                edgedb.Set([
                    edgedb.NamedTuple(a=42, world=("hello", 32)),
                    edgedb.NamedTuple(a=1, world=("yo", 10)),
                ]))

            with self.assertRaisesRegex(
                    edgedb.InterfaceError,
                    r'query_single\(\) as it returns a multiset'):
                await self.client.query_single('SELECT {1, 2}')

            with self.assertRaisesRegex(
                    edgedb.InterfaceError,
                    r'query_required_single\(\) as it returns a multiset'):
                await self.client.query_required_single('SELECT {1, 2}')

            with self.assertRaisesRegex(edgedb.NoDataError,
                                        r'\bquery_required_single\('):
                await self.client.query_required_single('SELECT <int64>{}')
Exemplo n.º 5
0
    def test_namedtuple_5(self):
        self.assertEqual(edgedb.NamedTuple(a=1, b=2, c=3),
                         edgedb.NamedTuple(x=1, y=2, z=3))

        self.assertNotEqual(edgedb.NamedTuple(a=1, b=2, c=3),
                            edgedb.NamedTuple(a=1, c=3, b=2))

        self.assertLess(edgedb.NamedTuple(a=1, b=2, c=3),
                        edgedb.NamedTuple(a=1, b=3, c=2))

        self.assertEqual(edgedb.NamedTuple(a=1), edgedb.NamedTuple(b=1))

        self.assertEqual(edgedb.NamedTuple(a=1), edgedb.NamedTuple(a=1))
Exemplo n.º 6
0
    def test_namedtuple_4(self):
        t1 = edgedb.NamedTuple(a=1, b='aaaa')
        t2 = edgedb.Tuple((1, 'aaaa'))
        t3 = (1, 'aaaa')

        self.assertEqual(hash(t1), hash(t2))
        self.assertEqual(hash(t1), hash(t3))
Exemplo n.º 7
0
    def test_namedtuple_3(self):
        t = edgedb.NamedTuple(a=1, b=[])
        t.b.append(t)
        self.assertEqual(t.b, [t])

        self.assertEqual(repr(t), '(a := 1, b := [(...)])')
        self.assertEqual(str(t), '(a := 1, b := [(...)])')
Exemplo n.º 8
0
    def test_namedtuple_2(self):
        t = edgedb.NamedTuple(a=1)
        self.assertEqual(repr(t), "(a := 1)")

        t = edgedb.NamedTuple(a=1, b='a')

        self.assertEqual(set(dir(t)), {'a', 'b'})

        self.assertEqual(repr(t), "(a := 1, b := 'a')")

        self.assertEqual(t[0], 1)
        self.assertEqual(t[1], 'a')
        with self.assertRaisesRegex(IndexError, 'out of range'):
            t[2]

        self.assertEqual(len(t), 2)
        self.assertEqual(hash(t), hash((1, 'a')))

        self.assertEqual(t.a, 1)
        self.assertEqual(t.b, 'a')

        with self.assertRaises(AttributeError):
            t.z
Exemplo n.º 9
0
    def test_namedtuple_6(self):
        self.assertEqual(edgedb.NamedTuple(a=1, b=2, c=3), (1, 2, 3))

        self.assertEqual((1, 2, 3), edgedb.NamedTuple(a=1, b=2, c=3))

        self.assertNotEqual(edgedb.NamedTuple(a=1, b=2, c=3), (1, 3, 2))

        self.assertLess(edgedb.NamedTuple(a=1, b=2, c=3), (1, 3, 2))

        self.assertEqual(edgedb.NamedTuple(a=1), (1, ))

        self.assertEqual(edgedb.NamedTuple(a=1), (1, ))
Exemplo n.º 10
0
 def test_namedtuple_7(self):
     self.assertNotEqual(edgedb.NamedTuple(a=1, b=2, c=3), 1)
Exemplo n.º 11
0
 def test_namedtuple_empty_1(self):
     with self.assertRaisesRegex(ValueError, 'at least one field'):
         edgedb.NamedTuple()