1 module mysql.mysql_query_interface_test;
2 
3 import std.stdio;
4 import dunit.toolkit;
5 
6 import mysql.mysql;
7 import mysql.query_interface;
8 import mysql.test_helper;
9 
10 
11 // case with `?`
12 unittest {
13     auto mysql = testing_db_init();
14     string table_name = "windows";
15     mysql.query("CREATE TABLE `?` (id INT);", table_name);
16     mysql.query("DROP TABLE `?`", table_name);
17 
18     assertEqual(mysql.listTables, []);
19 }
20 
21 // case with long
22 unittest {
23     long num = 5;
24     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
25     assertEqual(query, "select 1 + '5' as ss");
26 }
27 
28 
29 // case with int
30 unittest {
31     int num = 5;
32     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
33     assertEqual(query, "select 1 + '5' as ss");
34 }
35 
36 
37 // case with ubyte
38 unittest {
39     ubyte num = 0x05;
40     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
41     assertEqual(query, "select 1 + '5' as ss");
42 }
43 
44 
45 // case with byte
46 unittest {
47     byte num = 0x05;
48     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
49     assertEqual(query, "select 1 + '5' as ss");
50 }
51 
52 
53 // case with short
54 unittest {
55     short num = 5;
56     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
57     assertEqual(query, "select 1 + '5' as ss");
58 }
59 
60 // case with ushort
61 unittest {
62     ushort num = 5;
63     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
64     assertEqual(query, "select 1 + '5' as ss");
65 }
66 
67 // case with float
68 unittest {
69     float num = 5.5;
70     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
71     assertEqual(query, "select 1 + '5.5' as ss");
72 }
73 
74 // case with double
75 unittest {
76     double num = 5.5;
77     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
78     assertEqual(query, "select 1 + '5.5' as ss");
79 }
80 
81 // case with real
82 unittest {
83     real num = 5.5;
84     auto query = QueryInterface.makeQuery(new Mysql, "select 1 + ? as ss", num);
85     assertEqual(query, "select 1 + '5.5' as ss");
86 }
87 
88 // case with array
89 unittest {
90     int[4] values = [0, 1, 2, 3];
91     auto query = QueryInterface.makeQuery(new Mysql, "select 1 in (?) as ss", values);
92     assertEqual(query, "select 1 in (0, 1, 2, 3) as ss");
93 }
94 
95 // case with array int[]
96 unittest {
97     int[4] values = [0, 1, 2, 3];
98     auto query = QueryInterface.makeQuery(new Mysql, "select 1 in (?) as ss", values);
99     assertEqual(query, "select 1 in (0, 1, 2, 3) as ss");
100 }
101 
102 // case with array float[]
103 unittest {
104     float[4] values = [0, 1.5, 2, 3];
105     auto query = QueryInterface.makeQuery(new Mysql, "select 1 in (?) as ss", values);
106     assertEqual(query, "select 1 in (0, 1.5, 2, 3) as ss");
107 }
108 
109 // case with array string[]
110 unittest {
111     string[3] values = ["apple", "banana", "mangoostene"];
112     auto query = QueryInterface.makeQuery(new Mysql, "select 1 in (?) as ss", values);
113     assertEqual(query, "select 1 in ('apple', 'banana', 'mangoostene') as ss");
114 }