summaryrefslogtreecommitdiff
path: root/tests/test_grouping.py
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2009-04-03 21:26:42 +0200
committerAndi Albrecht <albrecht.andi@gmail.com>2009-04-03 21:26:42 +0200
commit361122eb22d5681c58dac731009e4814b3dd5fa5 (patch)
treeb096496bc9c6b8febe092d0aefd56de1a4f8f4a0 /tests/test_grouping.py
downloadsqlparse-361122eb22d5681c58dac731009e4814b3dd5fa5.tar.gz
Initial import.
Diffstat (limited to 'tests/test_grouping.py')
-rw-r--r--tests/test_grouping.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/test_grouping.py b/tests/test_grouping.py
new file mode 100644
index 0000000..fc3bea5
--- /dev/null
+++ b/tests/test_grouping.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+import sqlparse
+from sqlparse import tokens as T
+from sqlparse.engine.grouping import *
+
+from tests.utils import TestCaseBase
+
+
+class TestGrouping(TestCaseBase):
+
+ def test_parenthesis(self):
+ s ='x1 (x2 (x3) x2) foo (y2) bar'
+ parsed = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, str(parsed))
+ self.assertEqual(len(parsed.tokens), 9)
+ self.assert_(isinstance(parsed.tokens[2], Parenthesis))
+ self.assert_(isinstance(parsed.tokens[-3], Parenthesis))
+ self.assertEqual(len(parsed.tokens[2].tokens), 7)
+ self.assert_(isinstance(parsed.tokens[2].tokens[3], Parenthesis))
+ self.assertEqual(len(parsed.tokens[2].tokens[3].tokens), 3)
+
+ def test_comments(self):
+ s = '/*\n * foo\n */ \n bar'
+ parsed = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, unicode(parsed))
+ self.assertEqual(len(parsed.tokens), 2)
+
+ def test_identifiers(self):
+ s = 'select foo.bar from "myscheme"."table" where fail. order'
+ parsed = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, parsed.to_unicode())
+ self.assert_(isinstance(parsed.tokens[2], Identifier))
+ self.assert_(isinstance(parsed.tokens[6], Identifier))
+ self.assert_(isinstance(parsed.tokens[8], Where))
+ s = 'select * from foo where foo.id = 1'
+ parsed = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, parsed.to_unicode())
+ self.assert_(isinstance(parsed.tokens[-1].tokens[2], Identifier))
+ s = 'select * from (select "foo"."id" from foo)'
+ parsed = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, parsed.to_unicode())
+ self.assert_(isinstance(parsed.tokens[-1].tokens[3], Identifier))
+
+ def test_where(self):
+ s = 'select * from foo where bar = 1 order by id desc'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertTrue(len(p.tokens), 16)
+ s = 'select x from (select y from foo where bar = 1) z'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertTrue(isinstance(p.tokens[-3].tokens[-1], Where))
+
+ def test_typecast(self):
+ s = 'select foo::integer from bar'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertEqual(p.tokens[2].get_typecast(), 'integer')
+ self.assertEqual(p.tokens[2].get_name(), 'foo')
+ s = 'select (current_database())::information_schema.sql_identifier'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertEqual(p.tokens[2].get_typecast(),
+ 'information_schema.sql_identifier')
+
+ def test_alias(self):
+ s = 'select foo as bar from mytable'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertEqual(p.tokens[2].get_real_name(), 'foo')
+ self.assertEqual(p.tokens[2].get_alias(), 'bar')
+ s = 'select foo from mytable t1'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertEqual(p.tokens[6].get_real_name(), 'mytable')
+ self.assertEqual(p.tokens[6].get_alias(), 't1')
+ s = 'select foo::integer as bar from mytable'
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertEqual(p.tokens[2].get_alias(), 'bar')
+ s = ('SELECT DISTINCT '
+ '(current_database())::information_schema.sql_identifier AS view')
+ p = sqlparse.parse(s)[0]
+ self.ndiffAssertEqual(s, p.to_unicode())
+ self.assertEqual(p.tokens[4].get_alias(), 'view')