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>{}')
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([]), ]), )
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>{}')
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>{}')
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))
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))
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 := [(...)])')
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
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, ))
def test_namedtuple_7(self): self.assertNotEqual(edgedb.NamedTuple(a=1, b=2, c=3), 1)
def test_namedtuple_empty_1(self): with self.assertRaisesRegex(ValueError, 'at least one field'): edgedb.NamedTuple()