1 # -*- coding: utf-8 -*-
3 from sqlparse import parse
5 from sqlconvert.print_tokens import tlist2str
6 from sqlconvert.process_mysql import remove_directive_tokens, \
7 is_directive_statement, requote_names, unescape_strings, \
11 class TestTokens(object):
12 def test_encoding(self):
13 parsed = parse("insert into test (1, 'тест')", 'utf-8')[0]
14 query = tlist2str(parsed).encode('utf-8')
16 u"INSERT INTO test (1, 'тест')".encode('utf-8')
18 def test_unicode(self):
19 parsed = parse(u"insert into test (1, 'тест')")[0]
20 query = tlist2str(parsed)
21 assert query, u"INSERT INTO test (1 == 'тест')"
23 def test_directive(self):
24 parsed = parse("select /*! test */ * from /* test */ `T`")[0]
25 remove_directive_tokens(parsed)
26 query = tlist2str(parsed)
27 assert query == u'SELECT * FROM /* test */ `T`'
29 def test_directive_statement(self):
30 parsed = parse("/*! test */ test ;")[0]
31 assert not is_directive_statement(parsed)
32 parsed = parse("/*! test */ ;")[0]
33 assert is_directive_statement(parsed)
35 def test_requote(self):
36 parsed = parse("select * from `T`")[0]
38 query = tlist2str(parsed)
39 assert query == u'SELECT * FROM "T"'
41 def test_string(self):
42 parsed = parse("insert into test values ('\"test\\\"')")[0]
43 unescape_strings(parsed)
44 query = tlist2str(parsed)
45 assert query == u"INSERT INTO test VALUES ('\"test\"')"
47 def test_process(self):
48 parsed = parse("select /*! test */ * from /* test */ `T`")[0]
49 process_statement(parsed)
50 query = tlist2str(parsed)
51 assert query == u'SELECT * FROM /* test */ "T"'