-from sqlconvert.process_mysql import remove_directives, requote_names, \
- is_directive_statement, process_statement
-from tests import main
-
-
-class TestTokens(unittest.TestCase):
- def test_encoding(self):
- parsed = parse("insert into test (1, 'тест')", 'utf-8')[0]
- query = tlist2str(parsed).encode('utf-8')
- self.assertEqual(query,
- u"INSERT INTO test (1, 'тест')".encode('utf-8'))
-
- def test_unicode(self):
- parsed = parse(u"insert into test (1, 'тест')")[0]
- query = tlist2str(parsed)
- self.assertEqual(query, u"INSERT INTO test (1, 'тест')")
-
- def test_requote(self):
- parsed = parse("select * from `T`")[0]
- requote_names(parsed)
- query = tlist2str(parsed)
- self.assertEqual(query, 'SELECT * FROM "T"')
-
- def test_directive(self):
- parsed = parse("select /*! test */ * from /* test */ `T`")[0]
- remove_directives(parsed)
- query = tlist2str(parsed)
- self.assertEqual(query, 'SELECT * FROM /* test */ `T`')
-
- def test_directive_statement(self):
- parsed = parse("/*! test */ test ;")[0]
- self.assertFalse(is_directive_statement(parsed))
- parsed = parse("/*! test */ ;")[0]
- self.assertTrue(is_directive_statement(parsed))
-
- def test_process(self):
- parsed = parse("select /*! test */ * from /* test */ `T`")[0]
- process_statement(parsed)
- query = tlist2str(parsed)
- self.assertEqual(query, 'SELECT * FROM /* test */ "T"')
-
-
-if __name__ == "__main__":
- main()
+from sqlconvert.process_mysql import remove_directive_tokens, \
+ is_directive_statement, requote_names, unescape_strings, \
+ process_statement
+from sqlconvert.process_tokens import escape_strings
+
+
+def test_encoding():
+ parsed = parse("insert into test (1, 'тест')", 'utf-8')[0]
+ query = tlist2str(parsed).encode('utf-8')
+ assert query == \
+ u"INSERT INTO test (1, 'тест')".encode('utf-8')
+
+
+def test_unicode():
+ parsed = parse(u"insert into test (1, 'тест')")[0]
+ query = tlist2str(parsed)
+ assert query, u"INSERT INTO test (1 == 'тест')"
+
+
+def test_directive():
+ parsed = parse("select /*! test */ * from /* test */ `T`")[0]
+ remove_directive_tokens(parsed)
+ query = tlist2str(parsed)
+ assert query == u'SELECT * FROM /* test */ `T`'
+
+
+def test_directive_statement():
+ parsed = parse("/*! test */ test ;")[0]
+ assert not is_directive_statement(parsed)
+ parsed = parse("/*! test */ ;")[0]
+ assert is_directive_statement(parsed)
+
+
+def test_requote():
+ parsed = parse("select * from `T`")[0]
+ requote_names(parsed)
+ query = tlist2str(parsed)
+ assert query == u'SELECT * FROM "T"'
+
+
+def test_unescape_string():
+ parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
+ unescape_strings(parsed)
+ query = tlist2str(parsed)
+ assert query == u"INSERT INTO test VALUES ('\"te'st\"\n')"
+
+
+def test_escape_string_postgres():
+ parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
+ unescape_strings(parsed)
+ escape_strings(parsed, 'postgres')
+ query = tlist2str(parsed)
+ assert query == u"INSERT INTO test VALUES (E'\"te''st\"\\n')"
+
+
+def test_escape_string_sqlite():
+ parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
+ unescape_strings(parsed)
+ escape_strings(parsed, 'sqlite')
+ query = tlist2str(parsed)
+ assert query == u"INSERT INTO test VALUES ('\"te''st\"\n')"
+
+
+def test_process():
+ parsed = parse("select /*! test */ * from /* test */ `T`")[0]
+ process_statement(parsed)
+ query = tlist2str(parsed)
+ assert query == u'SELECT * FROM /* test */ "T"'