diff Framework/Plugins/IndexUnitTests.h @ 256:e184dcadf163

handling of revisions in metadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 16 Apr 2021 17:13:33 +0200
parents e9ba888f371b
children 34e2b93a7ac1
line wrap: on
line diff
--- a/Framework/Plugins/IndexUnitTests.h	Wed Apr 14 17:57:08 2021 +0200
+++ b/Framework/Plugins/IndexUnitTests.h	Fri Apr 16 17:13:33 2021 +0200
@@ -270,32 +270,61 @@
   ASSERT_TRUE(ci.back() == b || ci.back() == c);
   ASSERT_NE(ci.front(), ci.back());
 
-  db.SetMetadata(*manager, a, Orthanc::MetadataType_ModifiedFrom, "modified");
-  db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update2");
-  ASSERT_FALSE(db.LookupMetadata(s, *manager, b, Orthanc::MetadataType_LastUpdate));
-  ASSERT_TRUE(db.LookupMetadata(s, *manager, a, Orthanc::MetadataType_LastUpdate));
+  db.SetMetadata(*manager, a, Orthanc::MetadataType_ModifiedFrom, "modified", 42);
+  db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update2", 43);
+  int64_t revision = -1;
+  ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, b, Orthanc::MetadataType_LastUpdate));
+  ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
   ASSERT_EQ("update2", s);
-  db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update");
-  ASSERT_TRUE(db.LookupMetadata(s, *manager, a, Orthanc::MetadataType_LastUpdate));
+
+#if ORTHANC_ENABLE_SQLITE == 1
+  ASSERT_EQ(43, revision);  // Only SQLite implements revisions so far
+#else
+  ASSERT_EQ(0, revision);
+#endif
+
+  db.SetMetadata(*manager, a, Orthanc::MetadataType_LastUpdate, "update", 44);
+  ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
   ASSERT_EQ("update", s);
 
+#if ORTHANC_ENABLE_SQLITE == 1
+  ASSERT_EQ(44, revision);  // Only SQLite implements revisions so far
+#else
+  ASSERT_EQ(0, revision);
+#endif
+
   std::list<int32_t> md;
   db.ListAvailableMetadata(md, *manager, a);
   ASSERT_EQ(2u, md.size());
   ASSERT_TRUE(md.front() == Orthanc::MetadataType_ModifiedFrom || md.back() == Orthanc::MetadataType_ModifiedFrom);
   ASSERT_TRUE(md.front() == Orthanc::MetadataType_LastUpdate || md.back() == Orthanc::MetadataType_LastUpdate);
   std::string mdd;
-  ASSERT_TRUE(db.LookupMetadata(mdd, *manager, a, Orthanc::MetadataType_ModifiedFrom));
+  ASSERT_TRUE(db.LookupMetadata(mdd, revision, *manager, a, Orthanc::MetadataType_ModifiedFrom));
   ASSERT_EQ("modified", mdd);
-  ASSERT_TRUE(db.LookupMetadata(mdd, *manager, a, Orthanc::MetadataType_LastUpdate));
+
+#if ORTHANC_ENABLE_SQLITE == 1
+  ASSERT_EQ(42, revision);  // Only SQLite implements revisions so far
+#else
+  ASSERT_EQ(0, revision);
+#endif
+
+  ASSERT_TRUE(db.LookupMetadata(mdd, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
   ASSERT_EQ("update", mdd);
 
+#if ORTHANC_ENABLE_SQLITE == 1
+  ASSERT_EQ(44, revision);  // Only SQLite implements revisions so far
+#else
+  ASSERT_EQ(0, revision);
+#endif
+
   db.ListAvailableMetadata(md, *manager, b);
   ASSERT_EQ(0u, md.size());
 
+  ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
   db.DeleteMetadata(*manager, a, Orthanc::MetadataType_LastUpdate);
+  ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
   db.DeleteMetadata(*manager, b, Orthanc::MetadataType_LastUpdate);
-  ASSERT_FALSE(db.LookupMetadata(s, *manager, a, Orthanc::MetadataType_LastUpdate));
+  ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, a, Orthanc::MetadataType_LastUpdate));
 
   db.ListAvailableMetadata(md, *manager, a);
   ASSERT_EQ(1u, md.size());