]> git.phdru.name Git - sqlconvert.git/blob - tests/test_tokens.py
Fix a bug: assign buffer even if encoding is None
[sqlconvert.git] / tests / test_tokens.py
1 # -*- coding: utf-8 -*-
2
3 from sqlparse import parse
4
5 from sqlconvert.print_tokens import tlist2str
6 from sqlconvert.process_mysql import remove_directive_tokens, \
7         is_directive_statement, requote_names, unescape_strings, \
8         process_statement
9 from sqlconvert.process_tokens import escape_strings
10
11
12 def test_encoding():
13     parsed = parse("insert into test (1, 'тест')", 'utf-8')[0]
14     query = tlist2str(parsed).encode('utf-8')
15     assert query == \
16         u"INSERT INTO test (1, 'тест')".encode('utf-8')
17
18
19 def test_unicode():
20     parsed = parse(u"insert into test (1, 'тест')")[0]
21     query = tlist2str(parsed)
22     assert query, u"INSERT INTO test (1 == 'тест')"
23
24
25 def test_directive():
26     parsed = parse("select /*! test */ * from /* test */ `T`")[0]
27     remove_directive_tokens(parsed)
28     query = tlist2str(parsed)
29     assert query == u'SELECT * FROM /* test */ `T`'
30
31
32 def test_directive_statement():
33     parsed = parse("/*! test */ test ;")[0]
34     assert not is_directive_statement(parsed)
35     parsed = parse("/*! test */ ;")[0]
36     assert is_directive_statement(parsed)
37
38
39 def test_requote():
40     parsed = parse("select * from `T`")[0]
41     requote_names(parsed)
42     query = tlist2str(parsed)
43     assert query == u'SELECT * FROM "T"'
44
45
46 def test_unescape_string():
47     parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
48     unescape_strings(parsed)
49     query = tlist2str(parsed)
50     assert query == u"INSERT INTO test VALUES ('\"te'st\"\n')"
51
52
53 def test_escape_string_postgres():
54     parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
55     unescape_strings(parsed)
56     escape_strings(parsed, 'postgres')
57     query = tlist2str(parsed)
58     assert query == u"INSERT INTO test VALUES (E'\"te''st\"\\n')"
59
60
61 def test_escape_string_sqlite():
62     parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
63     unescape_strings(parsed)
64     escape_strings(parsed, 'sqlite')
65     query = tlist2str(parsed)
66     assert query == u"INSERT INTO test VALUES ('\"te''st\"\n')"
67
68
69 def test_process():
70     parsed = parse("select /*! test */ * from /* test */ `T`")[0]
71     process_statement(parsed)
72     query = tlist2str(parsed)
73     assert query == u'SELECT * FROM /* test */ "T"'