diff options
| author | Jesús Leganés Combarro "Piranna" <piranna@gmail.com> | 2012-05-17 23:18:05 +0200 |
|---|---|---|
| committer | Jesús Leganés Combarro "Piranna" <piranna@gmail.com> | 2012-05-17 23:18:05 +0200 |
| commit | 4a41241e8fc084d25cde943263ea507509f9ead4 (patch) | |
| tree | abe4308aac28cdbef3ce08e9e4b96e708c527b5d | |
| parent | 73465819c9d5105f57a9cf5579c5dc78964b37e4 (diff) | |
| download | sqlparse-4a41241e8fc084d25cde943263ea507509f9ead4.tar.gz | |
Added tests for functions
| -rw-r--r-- | sqlparse/functions.py | 4 | ||||
| -rw-r--r-- | tests/test_functions.py | 103 |
2 files changed, 105 insertions, 2 deletions
diff --git a/sqlparse/functions.py b/sqlparse/functions.py index 693fe6a..25dc005 100644 --- a/sqlparse/functions.py +++ b/sqlparse/functions.py @@ -40,5 +40,5 @@ class IsType(): def __call__(self, stream): for token_type, value in stream: - if token_type in Whitespace: continue - return token_type in Keyword and value == self.type + if token_type not in Whitespace: + return token_type in Keyword and value == self.type diff --git a/tests/test_functions.py b/tests/test_functions.py new file mode 100644 index 0000000..73865a2 --- /dev/null +++ b/tests/test_functions.py @@ -0,0 +1,103 @@ +''' +Created on 13/02/2012 + +@author: piranna +''' +from unittest import main, TestCase + +from sqlparse.lexer import tokenize + +import sys +sys.path.insert(0, '..') + +from sqlparse.functions import GetColumns, GetLimit, IsType + + +class Test_SQL(TestCase): + sql = """-- type: script + -- return: integer + + INCLUDE "_Make_DirEntry.sql"; + + INSERT INTO directories(inode) + VALUES(:inode) + LIMIT 1""" + + sql2 = """SELECT child_entry,asdf AS inode, creation + FROM links + WHERE parent_dir == :parent_dir AND name == :name + LIMIT 1""" + + sql3 = """SELECT + 0 AS st_dev, + 0 AS st_uid, + 0 AS st_gid, + + dir_entries.type AS st_mode, + dir_entries.inode AS st_ino, + COUNT(links.child_entry) AS st_nlink, + + :creation AS st_ctime, + dir_entries.access AS st_atime, + dir_entries.modification AS st_mtime, +-- :creation AS st_ctime, +-- CAST(STRFTIME('%s',dir_entries.access) AS INTEGER) AS st_atime, +-- CAST(STRFTIME('%s',dir_entries.modification) AS INTEGER) AS st_mtime, + + COALESCE(files.size,0) AS st_size, -- Python-FUSE + COALESCE(files.size,0) AS size -- PyFilesystem + +FROM dir_entries + LEFT JOIN files + ON dir_entries.inode == files.inode + LEFT JOIN links + ON dir_entries.inode == links.child_entry + +WHERE dir_entries.inode == :inode + +GROUP BY dir_entries.inode +LIMIT 1""" + + +class Test_GetColumns(Test_SQL): + def test_getcolumns1(self): + columns = GetColumns(tokenize(self.sql)) + self.assertEqual(columns, []) + + def test_getcolumns2(self): + columns = GetColumns(tokenize(self.sql2)) + self.assertEqual(columns, ['child_entry', 'inode', 'creation']) + + def test_getcolumns3(self): + columns = GetColumns(tokenize(self.sql3)) + self.assertEqual(columns, ['st_dev', 'st_uid', 'st_gid', 'st_mode', + 'st_ino', 'st_nlink', 'st_ctime', + 'st_atime', 'st_mtime', 'st_size', 'size']) + + +class Test_GetLimit(Test_SQL): + def test_getlimit1(self): + limit = GetLimit(tokenize(self.sql)) + self.assertEqual(limit, 1) + + def test_getlimit2(self): + limit = GetLimit(tokenize(self.sql2)) + self.assertEqual(limit, 1) + + def test_getlimit3(self): + limit = GetLimit(tokenize(self.sql3)) + self.assertEqual(limit, 1) + + +class Test_IsType(Test_SQL): + def test_istype2(self): + stream = tokenize(self.sql2) + self.assertTrue(IsType('SELECT')(stream)) + + stream = tokenize(self.sql2) + self.assertFalse(IsType('INSERT')(stream)) + + +if __name__ == "__main__": + #import sys;sys.argv = ['', 'Test.testName'] + main() |
