5 #include "gtest/gtest.h"
12 #define COL_NAME_LEN 255
15 //=======================================================================================
16 class DbUtil : public ::testing::Test {
18 char pszFilePath[FILE_LEN + 1];
23 char col_name[COL_NAME_LEN + 1];
26 strncpy(pszFilePath, "test.db", FILE_LEN);
29 flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
39 rc = system("rm -f test.db");
40 rc = system("rm -f test.db-journal");
43 //=======================================================================================
44 // Testing for util_func.c
45 //=======================================================================================
46 TEST_F(DbUtil, db_util_open_p) {
49 rc = db_util_open(pszFilePath, &db, nOption);
50 ASSERT_EQ ( DB_UTIL_OK , rc );
52 rc = db_util_close(db);
53 ASSERT_EQ ( DB_UTIL_OK , rc );
56 TEST_F(DbUtil, db_util_open_n1) {
60 rc = db_util_open(".", &db, nOption);
61 ASSERT_NE ( DB_UTIL_OK , rc );
64 TEST_F(DbUtil, db_util_open_n2) {
68 rc = db_util_open(pszFilePath, NULL, nOption);
69 ASSERT_NE ( DB_UTIL_OK , rc );
72 TEST_F(DbUtil, db_util_close_n) {
76 rc = db_util_close(NULL);
77 ASSERT_EQ ( DB_UTIL_OK , rc );
80 TEST_F(DbUtil, db_util_open_with_options_p) {
83 rc = db_util_open_with_options(pszFilePath, &db, flags, zVfs);
84 ASSERT_EQ ( DB_UTIL_OK , rc );
86 rc = db_util_close(db);
87 ASSERT_EQ ( DB_UTIL_OK , rc );
90 TEST_F(DbUtil, db_util_open_with_options_n1) {
94 rc = db_util_open_with_options(".", &db, flags, zVfs);
95 ASSERT_NE ( DB_UTIL_OK , rc );
98 TEST_F(DbUtil, db_util_open_with_options_n2) {
102 rc = db_util_open_with_options(pszFilePath, NULL, flags, zVfs);
103 ASSERT_NE ( DB_UTIL_OK , rc );
106 TEST_F(DbUtil, db_util_open_n4) {
109 rc = db_util_open(pszFilePath, &db, nOption);
110 ASSERT_EQ ( DB_UTIL_OK , rc );
112 // In case of (geteuid() != 0) && access(pszFilePath, R_OK)
113 system("chmod 000 test.db");
115 uid_t uid = getuid();
118 rc = db_util_open(pszFilePath, &db, nOption);
121 ASSERT_EQ ( SQLITE_PERM , rc );
124 TEST_F(DbUtil, db_util_busyhandler) {
127 rc = db_util_open(pszFilePath, &db, nOption);
128 ASSERT_EQ ( DB_UTIL_OK , rc );
130 sqlite3_exec(db, "BEGIN EXCLUSIVE TRANSACTION;", NULL, NULL, NULL);
133 rc = db_util_open(pszFilePath, &db1, nOption);
134 ASSERT_EQ ( DB_UTIL_OK , rc );
136 sqlite3_exec(db1, "BEGIN EXCLUSIVE TRANSACTION;", NULL, NULL, NULL);
137 sqlite3_exec(db1, "END EXCLUSIVE TRANSACTION;", NULL, NULL, NULL);
140 sqlite3_exec(db, "END TRANSACTION;", NULL, NULL, NULL);
143 //=======================================================================================
144 // Testing for collation.c
145 //=======================================================================================
147 int run_query(sqlite3 *db, char* col_name) {
151 sqlite3_stmt *stmt = NULL;
153 snprintf( sql, BUF_LEN, "SELECT key, value FROM collation order by value COLLATE %s", col_name);
154 rc = sqlite3_prepare(db, sql, -1, &stmt, 0);
155 if(rc == SQLITE_OK ){
156 rc = sqlite3_step(stmt);
157 while(rc == SQLITE_ROW){
159 printf("key : [%s] : Value [%s]\n",
160 sqlite3_column_text(stmt,0),
161 sqlite3_column_text(stmt,1) );
163 rc = sqlite3_step(stmt);
167 sqlite3_finalize(stmt);
172 TEST_F(DbUtil, db_util_create_collation_p1) {
175 rc = system("./test_collation_db.sh");
177 rc = db_util_open(pszFilePath, &db, nOption);
178 ASSERT_EQ ( DB_UTIL_OK , rc );
181 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
183 strncpy(col_name,"COL_UCA_UTF8", COL_NAME_LEN);
184 rc = db_util_create_collation(db, DB_UTIL_COL_UCA, DB_UTIL_COL_UTF8, col_name );
185 ASSERT_EQ ( DB_UTIL_OK , rc );
187 rc = run_query(db, col_name);
189 rc = db_util_close(db);
190 ASSERT_EQ ( DB_UTIL_OK , rc );
193 TEST_F(DbUtil, db_util_create_collation_p2) {
196 rc = system("./test_collation_db.sh");
198 rc = db_util_open(pszFilePath, &db, nOption);
199 ASSERT_EQ ( DB_UTIL_OK , rc );
202 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
204 strncpy(col_name,"COL_LS_AS_CI_UTF8", COL_NAME_LEN);
205 rc = db_util_create_collation(db, DB_UTIL_COL_LS_AS_CI, DB_UTIL_COL_UTF8, col_name );
206 ASSERT_EQ ( DB_UTIL_OK , rc );
208 rc = run_query(db, col_name);
210 rc = db_util_close(db);
211 ASSERT_EQ ( DB_UTIL_OK , rc );
214 TEST_F(DbUtil, db_util_create_collation_p3) {
217 rc = system("./test_collation_db.sh");
219 rc = db_util_open(pszFilePath, &db, nOption);
220 ASSERT_EQ ( DB_UTIL_OK , rc );
223 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
225 strncpy(col_name,"COL_LS_AI_CI_UTF8", COL_NAME_LEN);
226 rc = db_util_create_collation(db, DB_UTIL_COL_LS_AI_CI, DB_UTIL_COL_UTF8, col_name );
227 ASSERT_EQ ( DB_UTIL_OK , rc );
229 rc = run_query(db, col_name);
231 rc = db_util_close(db);
232 ASSERT_EQ ( DB_UTIL_OK , rc );
235 TEST_F(DbUtil, db_util_create_collation_p4) {
238 rc = system("./test_collation_db.sh");
240 rc = db_util_open(pszFilePath, &db, nOption);
241 ASSERT_EQ ( DB_UTIL_OK , rc );
244 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
246 strncpy(col_name,"COL_LS_AI_CI_LC_UTF8", COL_NAME_LEN);
247 rc = db_util_create_collation(db, DB_UTIL_COL_LS_AI_CI_LC, DB_UTIL_COL_UTF8, col_name );
248 ASSERT_EQ ( DB_UTIL_OK , rc );
250 rc = run_query(db, col_name);
252 rc = db_util_close(db);
253 ASSERT_EQ ( DB_UTIL_OK , rc );
256 TEST_F(DbUtil, db_util_create_collation_p5) {
259 rc = system("./test_collation_db.sh");
261 rc = db_util_open(pszFilePath, &db, nOption);
262 ASSERT_EQ ( DB_UTIL_OK , rc );
265 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
267 strncpy(col_name,"COL_UCA_UTF16", COL_NAME_LEN);
268 rc = db_util_create_collation(db, DB_UTIL_COL_UCA, DB_UTIL_COL_UTF16, col_name );
269 ASSERT_EQ ( DB_UTIL_OK , rc );
271 rc = run_query(db, col_name);
273 rc = db_util_close(db);
274 ASSERT_EQ ( DB_UTIL_OK , rc );
277 TEST_F(DbUtil, db_util_create_collation_p6) {
280 rc = system("./test_collation_db.sh");
282 rc = db_util_open(pszFilePath, &db, nOption);
283 ASSERT_EQ ( DB_UTIL_OK , rc );
286 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
288 strncpy(col_name,"COL_LS_AS_CI_UTF16", COL_NAME_LEN);
289 rc = db_util_create_collation(db, DB_UTIL_COL_LS_AS_CI, DB_UTIL_COL_UTF16, col_name );
290 ASSERT_EQ ( DB_UTIL_OK , rc );
292 rc = run_query(db, col_name);
294 rc = db_util_close(db);
295 ASSERT_EQ ( DB_UTIL_OK , rc );
298 TEST_F(DbUtil, db_util_create_collation_p7) {
301 rc = system("./test_collation_db.sh");
303 rc = db_util_open(pszFilePath, &db, nOption);
304 ASSERT_EQ ( DB_UTIL_OK , rc );
307 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
309 strncpy(col_name,"COL_LS_AI_CI_UTF16", COL_NAME_LEN);
310 rc = db_util_create_collation(db, DB_UTIL_COL_LS_AI_CI, DB_UTIL_COL_UTF16, col_name );
311 ASSERT_EQ ( DB_UTIL_OK , rc );
313 rc = run_query(db, col_name);
315 rc = db_util_close(db);
316 ASSERT_EQ ( DB_UTIL_OK , rc );
319 TEST_F(DbUtil, db_util_create_collation_p8) {
322 rc = system("./test_collation_db.sh");
324 rc = db_util_open(pszFilePath, &db, nOption);
325 ASSERT_EQ ( DB_UTIL_OK , rc );
328 vconf_set_str("db/menu_widget/language", "en_US.UTF-8" );
330 strncpy(col_name,"COL_LS_AI_CI_LC_UTF16", COL_NAME_LEN);
331 rc = db_util_create_collation(db, DB_UTIL_COL_LS_AI_CI_LC, DB_UTIL_COL_UTF16, col_name );
332 ASSERT_EQ ( DB_UTIL_OK , rc );
334 rc = run_query(db, col_name);
336 rc = db_util_close(db);
337 ASSERT_EQ ( DB_UTIL_OK , rc );
340 TEST_F(DbUtil, db_util_create_collation_n1) {
343 rc = db_util_open(pszFilePath, &db, nOption);
344 ASSERT_EQ ( DB_UTIL_OK , rc );
347 vconf_set_str("db/menu_widget/language", "" );
349 strncpy(col_name,"COL_UCA_UTF8", COL_NAME_LEN);
350 rc = db_util_create_collation(db, DB_UTIL_COL_UCA, DB_UTIL_COL_UTF8, col_name );
351 ASSERT_EQ ( DB_UTIL_OK , rc );
353 rc = db_util_close(db);
354 ASSERT_EQ ( DB_UTIL_OK , rc );
357 TEST_F(DbUtil, db_util_create_collation_n2) {
360 rc = db_util_open(pszFilePath, &db, nOption);
361 ASSERT_EQ ( DB_UTIL_OK , rc );
363 // collate_type error
364 strncpy(col_name,"COL_KO_IC_UTF8", COL_NAME_LEN);
365 rc = db_util_create_collation(db, DB_UTIL_COL_KO_IC, DB_UTIL_COL_UTF8, col_name );
366 ASSERT_EQ ( DB_UTIL_ERROR , rc );
368 rc = db_util_close(db);
369 ASSERT_EQ ( DB_UTIL_OK , rc );
372 TEST_F(DbUtil, db_util_create_collation_n3) {
375 rc = db_util_open(pszFilePath, &db, nOption);
376 ASSERT_EQ ( DB_UTIL_OK , rc );
378 // collate_type error
379 strncpy(col_name,"COL_KO_IC_LC_UTF8", COL_NAME_LEN);
380 rc = db_util_create_collation(db, DB_UTIL_COL_KO_IC_LC, DB_UTIL_COL_UTF8, col_name );
381 ASSERT_EQ ( DB_UTIL_ERROR , rc );
383 rc = db_util_close(db);
384 ASSERT_EQ ( DB_UTIL_OK , rc );
387 TEST_F(DbUtil, db_util_create_collation_n4) {
390 rc = db_util_open(pszFilePath, &db, nOption);
391 ASSERT_EQ ( DB_UTIL_OK , rc );
393 // collate_textrep error
394 strncpy(col_name, "COL_UCA_UTF8", COL_NAME_LEN);
395 rc = db_util_create_collation(db, DB_UTIL_COL_UCA, (db_util_collate_textrep)3, col_name );
396 ASSERT_EQ ( DB_UTIL_ERROR , rc );
398 rc = db_util_close(db);
399 ASSERT_EQ ( DB_UTIL_OK , rc );
402 //=======================================================================================
403 int main(int argc, char** argv) {
404 ::testing::InitGoogleTest(&argc, argv);
405 return RUN_ALL_TESTS();