comparison MySQL/UnitTests/UnitTestsMain.cpp @ 17:54ea251aed70

unit test
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 10 Jul 2018 10:33:02 +0200
parents 9e419261f1c9
children 1e9bad493475
comparison
equal deleted inserted replaced
16:9e419261f1c9 17:54ea251aed70
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/ 19 **/
20 20
21 21
22 #include "../Plugins/MySQLIndex.h" 22 #include "../Plugins/MySQLIndex.h"
23 #include "../Plugins/MySQLStorageArea.h"
23 24
24 OrthancDatabases::MySQLParameters globalParameters_; 25 OrthancDatabases::MySQLParameters globalParameters_;
25 26
27 #include "../../Framework/Common/Integer64Value.h"
28 #include "../../Framework/MySQL/MySQLDatabase.h"
29 #include "../../Framework/MySQL/MySQLResult.h"
30 #include "../../Framework/MySQL/MySQLStatement.h"
26 #include "../../Framework/Plugins/IndexUnitTests.h" 31 #include "../../Framework/Plugins/IndexUnitTests.h"
27 #include "../../Framework/MySQL/MySQLDatabase.h"
28 32
29 #include <Core/Logging.h> 33 #include <Core/Logging.h>
30 34
31 #include <gtest/gtest.h> 35 #include <gtest/gtest.h>
32 36
51 ASSERT_THROW(db3.Open(), Orthanc::OrthancException); 55 ASSERT_THROW(db3.Open(), Orthanc::OrthancException);
52 } 56 }
53 57
54 OrthancDatabases::MySQLIndex db4(lock); 58 OrthancDatabases::MySQLIndex db4(lock);
55 db4.Open(); 59 db4.Open();
60 }
61
62
63 static int64_t CountFiles(OrthancDatabases::MySQLDatabase& db)
64 {
65 OrthancDatabases::Query query("SELECT COUNT(*) FROM StorageArea", true);
66 OrthancDatabases::MySQLStatement s(db, query);
67 OrthancDatabases::MySQLTransaction t(db);
68 OrthancDatabases::Dictionary d;
69 std::auto_ptr<OrthancDatabases::IResult> result(s.Execute(t, d));
70 return dynamic_cast<const OrthancDatabases::Integer64Value&>(result->GetField(0)).GetValue();
71 }
72
73
74 TEST(MySQL, StorageArea)
75 {
76 OrthancDatabases::MySQLStorageArea storageArea(globalParameters_);
77 storageArea.SetClearAll(true);
78
79 {
80 OrthancDatabases::DatabaseManager::Transaction transaction(storageArea.GetManager());
81 OrthancDatabases::MySQLDatabase& db =
82 dynamic_cast<OrthancDatabases::MySQLDatabase&>(transaction.GetDatabase());
83
84 ASSERT_EQ(0, CountFiles(db));
85
86 for (int i = 0; i < 10; i++)
87 {
88 std::string uuid = boost::lexical_cast<std::string>(i);
89 std::string value = "Value " + boost::lexical_cast<std::string>(i * 2);
90 storageArea.Create(transaction, uuid, value.c_str(), value.size(), OrthancPluginContentType_Unknown);
91 }
92
93 std::string tmp;
94 ASSERT_THROW(storageArea.ReadToString(tmp, transaction, "nope", OrthancPluginContentType_Unknown),
95 Orthanc::OrthancException);
96
97 ASSERT_EQ(10, CountFiles(db));
98 storageArea.Remove(transaction, "5", OrthancPluginContentType_Unknown);
99
100 ASSERT_EQ(9, CountFiles(db));
101
102 for (int i = 0; i < 10; i++)
103 {
104 std::string uuid = boost::lexical_cast<std::string>(i);
105 std::string expected = "Value " + boost::lexical_cast<std::string>(i * 2);
106 std::string content;
107
108 if (i == 5)
109 {
110 ASSERT_THROW(storageArea.ReadToString(content, transaction, uuid, OrthancPluginContentType_Unknown),
111 Orthanc::OrthancException);
112 }
113 else
114 {
115 storageArea.ReadToString(content, transaction, uuid, OrthancPluginContentType_Unknown);
116 ASSERT_EQ(expected, content);
117 }
118 }
119
120 for (int i = 0; i < 10; i++)
121 {
122 storageArea.Remove(transaction, boost::lexical_cast<std::string>(i),
123 OrthancPluginContentType_Unknown);
124 }
125
126 ASSERT_EQ(0, CountFiles(db));
127
128 transaction.Commit();
129 }
56 } 130 }
57 131
58 132
59 int main(int argc, char **argv) 133 int main(int argc, char **argv)
60 { 134 {