diff 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
line wrap: on
line diff
--- a/MySQL/UnitTests/UnitTestsMain.cpp	Tue Jul 10 10:10:35 2018 +0200
+++ b/MySQL/UnitTests/UnitTestsMain.cpp	Tue Jul 10 10:33:02 2018 +0200
@@ -20,11 +20,15 @@
 
 
 #include "../Plugins/MySQLIndex.h"
+#include "../Plugins/MySQLStorageArea.h"
 
 OrthancDatabases::MySQLParameters globalParameters_;
 
+#include "../../Framework/Common/Integer64Value.h"
+#include "../../Framework/MySQL/MySQLDatabase.h"
+#include "../../Framework/MySQL/MySQLResult.h"
+#include "../../Framework/MySQL/MySQLStatement.h"
 #include "../../Framework/Plugins/IndexUnitTests.h"
-#include "../../Framework/MySQL/MySQLDatabase.h"
 
 #include <Core/Logging.h>
 
@@ -56,6 +60,76 @@
 }
 
 
+static int64_t CountFiles(OrthancDatabases::MySQLDatabase& db)
+{
+  OrthancDatabases::Query query("SELECT COUNT(*) FROM StorageArea", true);
+  OrthancDatabases::MySQLStatement s(db, query);
+  OrthancDatabases::MySQLTransaction t(db);
+  OrthancDatabases::Dictionary d;
+  std::auto_ptr<OrthancDatabases::IResult> result(s.Execute(t, d));
+  return dynamic_cast<const OrthancDatabases::Integer64Value&>(result->GetField(0)).GetValue();
+}
+
+
+TEST(MySQL, StorageArea)
+{
+  OrthancDatabases::MySQLStorageArea storageArea(globalParameters_);
+  storageArea.SetClearAll(true);
+
+  {
+    OrthancDatabases::DatabaseManager::Transaction transaction(storageArea.GetManager());
+    OrthancDatabases::MySQLDatabase& db = 
+      dynamic_cast<OrthancDatabases::MySQLDatabase&>(transaction.GetDatabase());
+
+    ASSERT_EQ(0, CountFiles(db));
+  
+    for (int i = 0; i < 10; i++)
+    {
+      std::string uuid = boost::lexical_cast<std::string>(i);
+      std::string value = "Value " + boost::lexical_cast<std::string>(i * 2);
+      storageArea.Create(transaction, uuid, value.c_str(), value.size(), OrthancPluginContentType_Unknown);
+    }
+
+    std::string tmp;
+    ASSERT_THROW(storageArea.ReadToString(tmp, transaction, "nope", OrthancPluginContentType_Unknown), 
+                 Orthanc::OrthancException);
+  
+    ASSERT_EQ(10, CountFiles(db));
+    storageArea.Remove(transaction, "5", OrthancPluginContentType_Unknown);
+
+    ASSERT_EQ(9, CountFiles(db));
+
+    for (int i = 0; i < 10; i++)
+    {
+      std::string uuid = boost::lexical_cast<std::string>(i);
+      std::string expected = "Value " + boost::lexical_cast<std::string>(i * 2);
+      std::string content;
+
+      if (i == 5)
+      {
+        ASSERT_THROW(storageArea.ReadToString(content, transaction, uuid, OrthancPluginContentType_Unknown), 
+                     Orthanc::OrthancException);
+      }
+      else
+      {
+        storageArea.ReadToString(content, transaction, uuid, OrthancPluginContentType_Unknown);
+        ASSERT_EQ(expected, content);
+      }
+    }
+
+    for (int i = 0; i < 10; i++)
+    {
+      storageArea.Remove(transaction, boost::lexical_cast<std::string>(i),
+                         OrthancPluginContentType_Unknown);
+    }
+
+    ASSERT_EQ(0, CountFiles(db));
+
+    transaction.Commit();
+  }
+}
+
+
 int main(int argc, char **argv)
 {
   if (argc < 5)