QNLP  v1.0
test_db.cpp File Reference

Unit tests for the 'db' module. Classes tested: [DBHelper, CorpusUtils]. More...

#include <fstream>
#include <cstdlib>
#include "db_helper.hpp"
#include "corpus_utils.hpp"
#include "catch2/catch.hpp"
Include dependency graph for test_db.cpp:

Go to the source code of this file.

Functions

 TEST_CASE ("DBHelper unit tests: Default constructor: DBHelper()","[db]")
 Testing default constructor and subsequent functions on DBHelper class. More...
 
 TEST_CASE ("Parameterised constructor: DBHelper(const std::string filename) with 'test.db'","[db]")
 Testing parameterised constructor and subsequent functions on DBHelper class with given database 'test.db'. More...
 
 TEST_CASE ("Parameterised constructor: DBHelper(const std::string filename) with 'none.db'","[db]")
 Testing parameterised constructor and subsequent functions on DBHelper class with non-existant database 'none.db'. More...
 
 TEST_CASE ("CorpusUtils unit tests: Default constructor: CorpusUtils()","[db]")
 Testing default constructor and subsequent functions on CorpusUtils class. More...
 
 TEST_CASE ("CorpusUtils unit tests: Paramaterised constructor: CorpusUtils(test_db.db)","[db]")
 Testing parameterised constructor and subsequent functions on CorpusUtils class. More...
 

Detailed Description

Unit tests for the 'db' module. Classes tested: [DBHelper, CorpusUtils].

Author
Lee J. O'Riordan (lee.o.nosp@m.rior.nosp@m.dan@i.nosp@m.chec.nosp@m..ie)
Version
0.1
Date
2019-05-01

Definition in file test_db.cpp.

Function Documentation

◆ TEST_CASE() [1/5]

TEST_CASE ( "DBHelper unit tests: Default constructor: DBHelper()"  ,
""  [db] 
)

Testing default constructor and subsequent functions on DBHelper class.

Definition at line 28 of file test_db.cpp.

28  : Default constructor: DBHelper()","[db]"){
29  DBHelper db;
30 
31  //REQUIRE(db.getFilename() == "qnlp_tagged_corpus.sqlite");
32  REQUIRE(db.getFilename() == "");
33  REQUIRE(db.getDBRef() == nullptr);
34 
35  SECTION("openDB(const std::string filename) with 'test_db.db'"){
36  int ret_code = db.openDB("test_db.db");
37  REQUIRE(ret_code == 0);
38  REQUIRE(db.getDBRef() != nullptr);
39  REQUIRE(db.getFilename().compare("test_db.db") == 0);
40 
41  SECTION("closeDB()"){
42  db.closeDB();
43  REQUIRE(db.getFilename() == "");
44  REQUIRE(db.getDBRef() == nullptr );
45  }
46  }
47  SECTION("openDB(const std::string filename) with 'none.db'"){
48  REQUIRE(db.openDB("none.db") != 0);
49  REQUIRE(db.getDBRef() == nullptr);
50  REQUIRE(db.getFilename().compare("") == 0);
51 
52  SECTION("closeDB()"){
53  db.closeDB();
54  REQUIRE(db.getFilename() == "");
55  REQUIRE(db.getDBRef() == nullptr );
56  }
57  }
58 }

References QNLP::DBHelper::closeDB(), QNLP::DBHelper::getDBRef(), QNLP::DBHelper::getFilename(), and QNLP::DBHelper::openDB().

Here is the call graph for this function:

◆ TEST_CASE() [2/5]

TEST_CASE ( "Parameterised constructor: DBHelper(const std::string filename) with 'test.db'"  ,
""  [db] 
)

Testing parameterised constructor and subsequent functions on DBHelper class with given database 'test.db'.

Definition at line 65 of file test_db.cpp.

65  : DBHelper(const std::string filename) with 'test.db'","[db]"){
66  DBHelper db("test_db.db");
67 
68  REQUIRE(db.getFilename() == "test_db.db");
69  REQUIRE(db.getDBRef() != nullptr);
70 
71  SECTION("openDB(const std::string filename) with 'test_db.db'"){
72  REQUIRE(db.openDB("test_db.db") == 0);
73  REQUIRE(db.getDBRef() != nullptr);
74  REQUIRE(db.getFilename().compare("test_db.db") == 0);
75  }
76  SECTION("closeDB()"){
77  db.closeDB();
78  REQUIRE(db.getFilename() == "");
79  REQUIRE(db.getDBRef() == nullptr );
80  }
81 }

References QNLP::DBHelper::closeDB(), QNLP::DBHelper::getDBRef(), QNLP::DBHelper::getFilename(), and QNLP::DBHelper::openDB().

Here is the call graph for this function:

◆ TEST_CASE() [3/5]

TEST_CASE ( "Parameterised constructor: DBHelper(const std::string filename) with 'none.db'"  ,
""  [db] 
)

Testing parameterised constructor and subsequent functions on DBHelper class with non-existant database 'none.db'.

Definition at line 88 of file test_db.cpp.

88  : DBHelper(const std::string filename) with 'none.db'","[db]"){
89  DBHelper db("none.db");
90 
91  REQUIRE(db.getFilename() == "");
92  REQUIRE(db.getDBRef() == nullptr);
93 
94  SECTION("openDB(const std::string filename) with 'none.db'"){
95  REQUIRE(db.openDB("none.db") != 0 );
96  REQUIRE(db.getDBRef() == nullptr);
97  REQUIRE(db.getFilename().compare("") == 0);
98  }
99  SECTION("closeDB()"){
100  db.closeDB();
101  REQUIRE(db.getFilename() == "");
102  REQUIRE(db.getDBRef() == nullptr );
103  }
104 }

References QNLP::DBHelper::closeDB(), QNLP::DBHelper::getDBRef(), QNLP::DBHelper::getFilename(), and QNLP::DBHelper::openDB().

Here is the call graph for this function:

◆ TEST_CASE() [4/5]

TEST_CASE ( "CorpusUtils unit tests: Default constructor: CorpusUtils()"  ,
""  [db] 
)

Testing default constructor and subsequent functions on CorpusUtils class.

Definition at line 110 of file test_db.cpp.

110  : Default constructor: CorpusUtils()","[db]"){
111  CorpusUtils cu;
112 
113  REQUIRE(cu.getBinToName().size() == 0);
114  REQUIRE(cu.getNameToBin().size() == 0);
115  REQUIRE(cu.get_database_filename().compare("qnlp_tagged_corpus.sqlite") == 0);
116  REQUIRE(cu.getDBHelper().getFilename().compare("qnlp_tagged_corpus.sqlite") == 0);
117  REQUIRE(cu.getDBHelper().getDBRef() != nullptr);
118 
119  SECTION("Load data: data_type=noun, table is default ('corpus')"){
120  cu.loadData("noun");
121  std::size_t n_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
122  REQUIRE(n_size[0] != 0);
123  REQUIRE(n_size[1] != 0);
124  }
125  SECTION("Load data: data_type=verb, table is default ('corpus')"){
126  cu.loadData("verb");
127  std::size_t v_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
128  REQUIRE(v_size[0] != 0);
129  REQUIRE(v_size[1] != 0);
130  }
131  SECTION("Load data: data_type=noun and verb, table is default ('corpus')"){
132  cu.loadData("verb");
133  std::size_t v_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
134  REQUIRE(v_size[0] != 0);
135  REQUIRE(v_size[1] != 0);
136 
137  cu.loadData("noun");
138  std::size_t vn_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
139  REQUIRE(vn_size[0] != v_size[0]);
140  REQUIRE(vn_size[1] != v_size[1]);
141  }
142  SECTION("Load data: data_type=noun and verb, table='basis'"){
143  cu.loadData("verb", "basis");
144  std::size_t v_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
145  REQUIRE(v_size[0] != 0);
146  REQUIRE(v_size[1] != 0);
147 
148  cu.loadData("noun", "basis");
149  std::size_t vn_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
150  REQUIRE(vn_size[0] != v_size[0]);
151  REQUIRE(vn_size[1] != v_size[1]);
152  }
153 }

References QNLP::CorpusUtils::get_database_filename(), QNLP::CorpusUtils::getBinToName(), QNLP::CorpusUtils::getDBHelper(), QNLP::DBHelper::getDBRef(), QNLP::DBHelper::getFilename(), QNLP::CorpusUtils::getNameToBin(), and QNLP::CorpusUtils::loadData().

Here is the call graph for this function:

◆ TEST_CASE() [5/5]

TEST_CASE ( "CorpusUtils unit tests: Paramaterised constructor: CorpusUtils(test_db.db)"  ,
""  [db] 
)

Testing parameterised constructor and subsequent functions on CorpusUtils class.

Definition at line 159 of file test_db.cpp.

159  : Paramaterised constructor: CorpusUtils(test_db.db)","[db]"){
160  CorpusUtils cu("test_db.db");
161 
162  REQUIRE(cu.getBinToName().size() == 0);
163  REQUIRE(cu.getNameToBin().size() == 0);
164  REQUIRE(cu.get_database_filename() == cu.getDBHelper().getFilename());
165  REQUIRE(cu.get_database_filename().compare("test_db.db") == 0);
166  REQUIRE(cu.getDBHelper().getFilename().compare("test_db.db") == 0);
167  REQUIRE(cu.getDBHelper().getDBRef() != nullptr);
168 
169  SECTION("Load data: data_type=noun, table is default ('corpus')"){
170  cu.loadData("noun");
171  std::size_t n_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
172  REQUIRE(n_size[0] != 0);
173  REQUIRE(n_size[1] != 0);
174  }
175  SECTION("Load data: data_type=verb, table is default ('corpus')"){
176  cu.loadData("verb");
177  std::size_t v_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
178  REQUIRE(v_size[0] != 0);
179  REQUIRE(v_size[1] != 0);
180  }
181  SECTION("Load data: data_type=noun and verb, table is default ('corpus')"){
182  cu.loadData("verb");
183  std::size_t v_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
184  REQUIRE(v_size[0] != 0);
185  REQUIRE(v_size[1] != 0);
186 
187  cu.loadData("noun");
188  std::size_t vn_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
189  REQUIRE(vn_size[0] != v_size[0]);
190  REQUIRE(vn_size[1] != v_size[1]);
191  }
192  SECTION("Load data: data_type=noun and verb, table='basis'"){
193  cu.loadData("verb", "basis");
194  std::size_t v_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
195  REQUIRE(v_size[0] != 0);
196  REQUIRE(v_size[1] != 0);
197 
198  cu.loadData("noun", "basis");
199  std::size_t vn_size[2] = {cu.getBinToName().size(), cu.getNameToBin().size()};
200  REQUIRE(vn_size[0] != v_size[0]);
201  REQUIRE(vn_size[1] != v_size[1]);
202  }
203 }

References QNLP::CorpusUtils::get_database_filename(), QNLP::CorpusUtils::getBinToName(), QNLP::CorpusUtils::getDBHelper(), QNLP::DBHelper::getDBRef(), QNLP::DBHelper::getFilename(), QNLP::CorpusUtils::getNameToBin(), and QNLP::CorpusUtils::loadData().

Here is the call graph for this function: