123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- #include <gtest/gtest.h>
- #include <json.hpp>
- #include <filesystem>
- //#define private public
- #include <ModuleSQL.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <sqlite3.h>
- using namespace mdd;
- static int callback(void* data, int argc, char** argv, char** azColName) {
- int i;
- fprintf(stderr, "%s: ", (const char*)data);
- for (i = 0; i < argc; i++) {
- printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
- }
- printf("\n");
- return 0;
- }
- void sqlite3_exec_debug(sqlite3* db, char* sql) {
- char* zErrMsg = 0;
- int rc;
- // Execute SQL statement
- rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "SQL error: %s\n", zErrMsg);
- sqlite3_free(zErrMsg);
- }
- else {
- fprintf(stdout, "Table created successfully\n");
- }
- }
- void create_test_db() {
- sqlite3* db;
- int rc;
- char* sql;
- // Open database
- rc = sqlite3_open("../../../lib/test/db/materials.db", &db);
- if (rc) {
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- return;
- }
- else {
- fprintf(stdout, "Opened database successfully\n");
- }
- // Create SQL statement
- sql = "CREATE TABLE MATERIAL(" \
- "ID INTEGER PRIMARY KEY AUTOINCREMENT," \
- "NAME TEXT NOT NULL," \
- "E11 FLOAT NOT NULL," \
- "E22 FLOAT NOT NULL," \
- "E33 FLOAT NOT NULL," \
- "PR12 FLOAT NOT NULL," \
- "PR13 FLOAT NOT NULL," \
- "PR23 FLOAT NOT NULL," \
- "G12 FLOAT NOT NULL," \
- "G13 FLOAT NOT NULL," \
- "G23 FLOAT NOT NULL," \
- "DENS FLOAT ," \
- "ALP11 FLOAT ," \
- "ALP22 FLOAT ," \
- "ALP33 FLOAT ," \
- "K11 FLOAT ," \
- "K22 FLOAT ," \
- "K33 FLOAT ," \
- "BET11 FLOAT ," \
- "BET22 FLOAT ," \
- "BET33 FLOAT ," \
- "D11 FLOAT ," \
- "D22 FLOAT ," \
- "D33 FLOAT );";
- sqlite3_exec_debug(db, sql);
-
- // Create SQL statement
- sql = "INSERT INTO MATERIAL ( NAME, E11, E22, E33, PR12, PR13, PR23, G12, G13, G23, DENS, ALP11, ALP22, ALP33, K11, K22, K33, BET11, BET22, BET33, D11, D22, D33) " \
- "VALUES ( 'EP-E Glas', 42.5, 11, 11, 0.28, 0.28, 0.28, 4.2, 4.2, 2.56, 1950E-6, 5.7E-6, 45E-6, 45E-6, 0.72E3, 0.5E3, 0.5E3, 0E-3, 4E-3, 4E-3, 4.4E3, 3.1E3, 3.1E3); ";
- sqlite3_exec_debug(db, sql);
- sqlite3_close(db);
- }
- TEST(ModuleSQL, TestSQL) {
- if (!std::filesystem::exists("../../../lib/test/db/materials.db")) {
- create_test_db();
- }
-
- sqlite3* db;
- char* zErrMsg = 0;
- int rc;
- char* sql;
- const char* data = "Callback function called";
- // Open database
- rc = sqlite3_open("../../../lib/test/db/materials.db", &db);
- if (rc) {
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- return;
- }
- else {
- fprintf(stderr, "Opened database successfully\n");
- }
- // Create SQL statement
- sql = "SELECT * from MATERIAL";
- // Execute SQL statement
- rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "SQL error: %s\n", zErrMsg);
- sqlite3_free(zErrMsg);
- }
- else {
- fprintf(stdout, "Operation done successfully\n");
- }
- sqlite3_close(db);
- EXPECT_TRUE(std::filesystem::exists("../../../lib/test/db/materials.db"));
- }
- TEST(ModuleSQL, TestGetSQLTableStructure) {
- if (!std::filesystem::exists("../../../lib/test/db/materials.db")) {
- create_test_db();
- }
- sqlite3* db;
- char* zErrMsg = 0;
- int rc;
- char* sql;
- const char* data = "Callback function called";
- // Open database
- rc = sqlite3_open("../../../lib/test/db/materials.db", &db);
- if (rc) {
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- return;
- }
- else {
- fprintf(stderr, "Opened database successfully\n");
- }
- // Create SQL statement
- sql = "SELECT * "\
- "FROM sqlite_master "\
- "WHERE type = 'table' ";
- // Execute SQL statement
- rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "SQL error: %s\n", zErrMsg);
- sqlite3_free(zErrMsg);
- }
- else {
- fprintf(stdout, "Operation done successfully\n");
- }
- sqlite3_close(db);
- EXPECT_TRUE(std::filesystem::exists("../../../lib/test/db/materials.db"));
- }
- TEST(ModuleSQL, OpenDB) {
- if (!std::filesystem::exists("../../../lib/test/db/materials.db")) {
- create_test_db();
- }
- ModuleSQL module = ModuleSQL("../../../lib/test/db/materials.db");
- module.update();
- EXPECT_TRUE(std::filesystem::exists("../../../lib/test/db/materials.db"));
- }
- TEST(ModuleSQL, TestDataExists) {
- if (!std::filesystem::exists("../../../lib/test/db/materials.db")) {
- create_test_db();
- }
- sqlite3* db;
- char* zErrMsg = 0;
- int rc;
- char* sql;
- const char* data = "Callback function called";
- // Open database
- rc = sqlite3_open("../../../lib/test/db/materials.db", &db);
- if (rc) {
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- return;
- }
- else {
- fprintf(stderr, "Opened database successfully\n");
- }
- // Create SQL statement
- sql = "SELECT * from MATERIAL";
- // Execute SQL statement
- rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
- if (rc != SQLITE_OK) {
- fprintf(stderr, "SQL error: %s\n", zErrMsg);
- sqlite3_free(zErrMsg);
- }
- else {
- fprintf(stdout, "Operation done successfully\n");
- }
- sqlite3_close(db);
- EXPECT_TRUE(std::filesystem::exists("../../../lib/test/db/materials.db"));
- }
- //*/
|