1 module mysql.mysql_test;
2 
3 import std.stdio;
4 import dunit.toolkit;
5 
6 import mysql.mysql;
7 import mysql.test_helper;
8 
9 // CHECK MYSQL CLIENT VERSION
10 unittest {
11     if (Mysql.clientVersion < 50100) {
12         writeln("Your mysqlclient version is ", Mysql.clientVersionString, ". Better use version >= 5.1");
13     }
14     assert(Mysql.clientVersion > 50100);
15 }
16 
17 // Mysql.dbname
18 unittest {
19     auto mysql = test_mysql_db_connection();
20     assert(mysql.dbname == mysql.queryOneRow("SELECT DATABASE() as current_db;")["current_db"]);
21 }
22 
23 // MYSQL PING
24 unittest {
25     auto mysql = test_mysql_db_connection;
26     assert(mysql.ping == 0);
27 }
28 
29 // MAKE CONNECTION, CHANGE DB
30 unittest {
31     auto mysql = test_mysql_db_connection();
32 
33     // drop database if exists
34     mysql.query("DROP DATABASE IF EXISTS " ~ test_mysql_db);
35     // create database
36     mysql.query("CREATE DATABASE " ~ test_mysql_db);
37 
38     // check current database
39     assertEqual(mysql.queryOneRow("SELECT DATABASE() as dbname;")["dbname"], "mysql");
40 
41     // change database
42     mysql.selectDb(test_mysql_db);
43 
44     // check, it should be changed
45     assertEqual(mysql.queryOneRow("SELECT DATABASE() as dbname;")["dbname"], test_mysql_db);
46 }
47 
48 // ESCAPE STRING
49 unittest {
50     auto mysql = new Mysql(test_mysql_host, test_mysql_user, test_mysql_password, test_mysql_db);
51     assertEqual(mysql.escape("string \"with\" quotes"), "string \\\"with\\\" quotes");
52 }
53 
54 // MYSQL STAT
55 unittest {
56     auto mysql = new Mysql(test_mysql_host, test_mysql_user, test_mysql_password, test_mysql_db);
57     mysql.stat.assertStartsWith("Uptime: ");
58 }
59 
60 // MYSQL CLOSE
61 unittest {
62     auto mysql = new Mysql(test_mysql_host, test_mysql_user, test_mysql_password, "mysql_d_testing");
63     mysql.close();
64 }
65 
66 // MYSQL OPTIONS
67 unittest {
68     auto mysql = new Mysql();
69     // if we comment this line then server will fall with errro
70     // MySQL server has gone away :::: SHOW VARIABLES WHERE `variable_name` = 'pseudo_thread_id';
71     mysql.setReconnect(true);
72     mysql.connect(test_mysql_host, 0, test_mysql_user, test_mysql_password, test_mysql_db);
73 
74     auto res = mysql.query("SHOW VARIABLES WHERE `variable_name` = 'pseudo_thread_id';");
75 
76     auto mysq2 = new Mysql(test_mysql_host, test_mysql_user, test_mysql_password, test_mysql_db);
77     mysq2.query("kill ?", res.front["Value"]);
78 
79     auto res2 = mysql.query("SHOW VARIABLES WHERE `variable_name` = 'pseudo_thread_id';");
80     assertEqual(res.front["Value"], res.front["Value"]);
81 }