]> git.phdru.name Git - sqlconvert.git/blob - tests/test_tokens.py
Unescape strings
[sqlconvert.git] / tests / test_tokens.py
1 #! /usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 import unittest
5 from sqlparse import parse
6
7 from sqlconvert.print_tokens import tlist2str
8 from sqlconvert.process_mysql import remove_directive_tokens, \
9         is_directive_statement, requote_names, unescape_strings, \
10         process_statement
11 from tests import main
12
13
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'))
20
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, 'тест')")
25
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`')
31
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))
37
38     def test_requote(self):
39         parsed = parse("select * from `T`")[0]
40         requote_names(parsed)
41         query = tlist2str(parsed)
42         self.assertEqual(query, u'SELECT * FROM "T"')
43
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\"')")
49
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"')
55
56
57 if __name__ == "__main__":
58     main()