2 # -*- coding: utf-8 -*-
5 from sqlparse import parse
7 from sqlconvert.print_tokens import tlist2str
8 from sqlconvert.process_mysql import remove_directive_tokens, \
9 is_directive_statement, requote_names, unescape_strings, \
11 from tests import main
14 class TestTokens(unittest.TestCase):
15 def test_encoding(self):
16 parsed = parse("insert into test (1, 'тест')", 'utf-8')[0]
17 query = tlist2str(parsed).encode('utf-8')
18 self.assertEqual(query,
19 u"INSERT INTO test (1, 'тест')".encode('utf-8'))
21 def test_unicode(self):
22 parsed = parse(u"insert into test (1, 'тест')")[0]
23 query = tlist2str(parsed)
24 self.assertEqual(query, u"INSERT INTO test (1, 'тест')")
26 def test_directive(self):
27 parsed = parse("select /*! test */ * from /* test */ `T`")[0]
28 remove_directive_tokens(parsed)
29 query = tlist2str(parsed)
30 self.assertEqual(query, u'SELECT * FROM /* test */ `T`')
32 def test_directive_statement(self):
33 parsed = parse("/*! test */ test ;")[0]
34 self.assertFalse(is_directive_statement(parsed))
35 parsed = parse("/*! test */ ;")[0]
36 self.assertTrue(is_directive_statement(parsed))
38 def test_requote(self):
39 parsed = parse("select * from `T`")[0]
41 query = tlist2str(parsed)
42 self.assertEqual(query, u'SELECT * FROM "T"')
44 def test_string(self):
45 parsed = parse("insert into test values ('\"test\\\"')")[0]
46 unescape_strings(parsed)
47 query = tlist2str(parsed)
48 self.assertEqual(query, u"INSERT INTO test VALUES ('\"test\"')")
50 def test_process(self):
51 parsed = parse("select /*! test */ * from /* test */ `T`")[0]
52 process_statement(parsed)
53 query = tlist2str(parsed)
54 self.assertEqual(query, u'SELECT * FROM /* test */ "T"')
57 if __name__ == "__main__":