def test_values(self): from google.cloud.spanner_dbapi.parser import a_args from google.cloud.spanner_dbapi.parser import terminal from google.cloud.spanner_dbapi.parser import values a_obj = a_args([a_args([terminal(10**i)]) for i in range(10)]) self.assertEqual(str(values(a_obj)), "VALUES%s" % str(a_obj))
def test_a_args_homogeneous(self): from google.cloud.spanner_dbapi.parser import a_args from google.cloud.spanner_dbapi.parser import terminal a_obj = a_args([a_args([terminal(10**i)]) for i in range(10)]) self.assertTrue(a_obj.homogenous()) a_obj = a_args([a_args([[object()]]) for _ in range(10)]) self.assertFalse(a_obj.homogenous())
def test_expect_values(self): cases = [ ("VALUES ()", "", values([a_args([])])), ("VALUES", "", values([])), ("VALUES(%s)", "", values([a_args([pyfmt_str])])), (" VALUES (%s) ", "", values([a_args([pyfmt_str])])), ("VALUES(%s, %s)", "", values([a_args([pyfmt_str, pyfmt_str])])), ( "VALUES(%s, %s, LOWER(%s, %s))", "", values([ a_args([ pyfmt_str, pyfmt_str, func("LOWER", a_args([pyfmt_str, pyfmt_str])), ]) ]), ), ( "VALUES (UPPER(%s)), (%s)", "", values([ a_args([func("UPPER", a_args([pyfmt_str]))]), a_args([pyfmt_str]), ]), ), ] for text, want_unconsumed, want_parsed in cases: with self.subTest(text=text): got_unconsumed, got_parsed = expect(text, VALUES) self.assertEqual(got_parsed, want_parsed) self.assertEqual(got_unconsumed, want_unconsumed)
def test_a_args_eq(self): from google.cloud.spanner_dbapi.parser import a_args a1 = a_args([0]) self.assertFalse(a1 == object()) a2 = a_args([0, 0]) self.assertFalse(a1 == a2) a1.argv = [0, 1] self.assertFalse(a1 == a2) a2.argv = [0, 1] self.assertTrue(a1 == a2)
def test_func(self): cases = [ ("_91())", ")", func("_91", a_args([]))), ("_a()", "", func("_a", a_args([]))), ("___()", "", func("___", a_args([]))), ("abc()", "", func("abc", a_args([]))), ( "AF112(%s, LOWER(%s, %s), rand(%s, %s, TAN(%s, %s)))", "", func( "AF112", a_args([ pyfmt_str, func("LOWER", a_args([pyfmt_str, pyfmt_str])), func( "rand", a_args([ pyfmt_str, pyfmt_str, func( "TAN", a_args([pyfmt_str, pyfmt_str]), ), ]), ), ]), ), ), ] for text, want_unconsumed, want_parsed in cases: with self.subTest(text=text): got_unconsumed, got_parsed = expect(text, FUNC) self.assertEqual(got_parsed, want_parsed) self.assertEqual(got_unconsumed, want_unconsumed)
def test_a_args(self): from google.cloud.spanner_dbapi.parser import ARGS from google.cloud.spanner_dbapi.parser import a_args from google.cloud.spanner_dbapi.parser import expect from google.cloud.spanner_dbapi.parser import func from google.cloud.spanner_dbapi.parser import pyfmt_str cases = [ ("()", "", a_args([])), ("(%s)", "", a_args([pyfmt_str])), ("(%s,)", "", a_args([pyfmt_str])), ("(%s),", ",", a_args([pyfmt_str])), ( "(%s,%s, f1(%s, %s))", "", a_args([ pyfmt_str, pyfmt_str, func("f1", a_args([pyfmt_str, pyfmt_str])) ]), ), ] for text, want_unconsumed, want_parsed in cases: with self.subTest(text=text): got_unconsumed, got_parsed = expect(text, ARGS) self.assertEqual(got_parsed, want_parsed) self.assertEqual(got_unconsumed, want_unconsumed)
def test_expect_values(self): from google.cloud.spanner_dbapi.parser import VALUES from google.cloud.spanner_dbapi.parser import a_args from google.cloud.spanner_dbapi.parser import expect from google.cloud.spanner_dbapi.parser import func from google.cloud.spanner_dbapi.parser import pyfmt_str from google.cloud.spanner_dbapi.parser import values cases = [ ("VALUES ()", "", values([a_args([])])), ("VALUES", "", values([])), ("VALUES(%s)", "", values([a_args([pyfmt_str])])), (" VALUES (%s) ", "", values([a_args([pyfmt_str])])), ("VALUES(%s, %s)", "", values([a_args([pyfmt_str, pyfmt_str])])), ( "VALUES(%s, %s, LOWER(%s, %s))", "", values([ a_args([ pyfmt_str, pyfmt_str, func("LOWER", a_args([pyfmt_str, pyfmt_str])), ]) ]), ), ( "VALUES (UPPER(%s)), (%s)", "", values([ a_args([func("UPPER", a_args([pyfmt_str]))]), a_args([pyfmt_str]) ]), ), ] for text, want_unconsumed, want_parsed in cases: with self.subTest(text=text): got_unconsumed, got_parsed = expect(text, VALUES) self.assertEqual(got_parsed, want_parsed) self.assertEqual(got_unconsumed, want_unconsumed)
def test_a_args(self): cases = [ ("()", "", a_args([])), ("(%s)", "", a_args([pyfmt_str])), ("(%s,)", "", a_args([pyfmt_str])), ("(%s),", ",", a_args([pyfmt_str])), ( "(%s,%s, f1(%s, %s))", "", a_args([ pyfmt_str, pyfmt_str, func("f1", a_args([pyfmt_str, pyfmt_str])), ]), ), ] for text, want_unconsumed, want_parsed in cases: with self.subTest(text=text): got_unconsumed, got_parsed = expect(text, ARGS) self.assertEqual(got_parsed, want_parsed) self.assertEqual(got_unconsumed, want_unconsumed)
def test_a_args__is_equal_length(self): from google.cloud.spanner_dbapi.parser import a_args a_obj = a_args([]) self.assertTrue(a_obj._is_equal_length())
def test_a_args_has_expr(self): from google.cloud.spanner_dbapi.parser import a_args self.assertFalse(a_args([]).has_expr()) self.assertTrue(a_args([[0]]).has_expr())