Mercurial > hg > orthanc-databases
changeset 688:b904eb3d987d attach-custom-data
added unit tests for custom data
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 12 Jun 2025 17:16:31 +0200 (3 weeks ago) |
parents | 28e7b1270486 |
children | 431aab517a46 |
files | Framework/Plugins/IndexUnitTests.h |
diffstat | 1 files changed, 62 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/Framework/Plugins/IndexUnitTests.h Thu Jun 12 16:13:57 2025 +0200 +++ b/Framework/Plugins/IndexUnitTests.h Thu Jun 12 17:16:31 2025 +0200 @@ -293,6 +293,26 @@ #endif +static void FillBlob(std::string& blob) +{ + blob.clear(); + blob.push_back(0); + blob.push_back(1); + blob.push_back(0); + blob.push_back(2); +} + + +static void CheckBlob(const std::string& s) +{ + ASSERT_EQ(4u, s.size()); + ASSERT_EQ(0u, static_cast<uint8_t>(s[0])); + ASSERT_EQ(1u, static_cast<uint8_t>(s[1])); + ASSERT_EQ(0u, static_cast<uint8_t>(s[2])); + ASSERT_EQ(2u, static_cast<uint8_t>(s[3])); +} + + TEST(IndexBackend, Basic) { using namespace OrthancDatabases; @@ -326,6 +346,13 @@ std::unique_ptr<IDatabaseBackendOutput> output(db.CreateOutput()); + { + // Sanity check + std::string blob; + FillBlob(blob); + CheckBlob(blob); + } + std::string s; ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseSchemaVersion)); ASSERT_EQ("6", s); @@ -498,7 +525,12 @@ a2.compressedSize = 4242; a2.compressedHash = "md5_2"; +#if ORTHANC_PLUGINS_HAS_ATTACHMENTS_CUSTOM_DATA == 1 + db.AddAttachment(*manager, a, a1, 42, "my_custom_data"); +#else db.AddAttachment(*manager, a, a1, 42); +#endif + db.ListAvailableAttachments(fc, *manager, a); ASSERT_EQ(1u, fc.size()); ASSERT_EQ(Orthanc::FileContentType_Dicom, fc.front()); @@ -507,6 +539,32 @@ ASSERT_EQ(2u, fc.size()); ASSERT_FALSE(db.LookupAttachment(*output, revision, *manager, b, Orthanc::FileContentType_Dicom)); +#if ORTHANC_PLUGINS_HAS_ATTACHMENTS_CUSTOM_DATA == 1 + { + std::string s; + ASSERT_THROW(db.GetAttachmentCustomData(s, *manager, "nope"), Orthanc::OrthancException); + + db.GetAttachmentCustomData(s, *manager, "uuid1"); + ASSERT_EQ("my_custom_data", s); + + db.GetAttachmentCustomData(s, *manager, "uuid2"); + ASSERT_TRUE(s.empty()); + + { + std::string blob; + FillBlob(blob); + db.SetAttachmentCustomData(*manager, "uuid1", blob); + } + + db.GetAttachmentCustomData(s, *manager, "uuid1"); + CheckBlob(s); + + db.SetAttachmentCustomData(*manager, "uuid1", ""); + db.GetAttachmentCustomData(s, *manager, "uuid1"); + ASSERT_TRUE(s.empty()); + } +#endif + ASSERT_EQ(4284u, db.GetTotalCompressedSize(*manager)); ASSERT_EQ(4284u, db.GetTotalUncompressedSize(*manager)); @@ -936,19 +994,12 @@ { std::string blob; - blob.push_back(0); - blob.push_back(1); - blob.push_back(0); - blob.push_back(2); + FillBlob(blob); db.StoreKeyValue(*manager, "test", "blob", blob); // Storing binary values } ASSERT_TRUE(db.GetKeyValue(s, *manager, "test", "blob")); - ASSERT_EQ(4u, s.size()); - ASSERT_EQ(0u, static_cast<uint8_t>(s[0])); - ASSERT_EQ(1u, static_cast<uint8_t>(s[1])); - ASSERT_EQ(0u, static_cast<uint8_t>(s[2])); - ASSERT_EQ(2u, static_cast<uint8_t>(s[3])); + CheckBlob(s); db.DeleteKeyValue(*manager, "test", "blob"); ASSERT_FALSE(db.GetKeyValue(s, *manager, "test", "blob")); @@ -991,19 +1042,12 @@ { std::string blob; - blob.push_back(0); - blob.push_back(1); - blob.push_back(0); - blob.push_back(2); + FillBlob(blob); db.EnqueueValue(*manager, "test", blob); // Storing binary values } ASSERT_TRUE(db.DequeueValue(s, *manager, "test", true)); - ASSERT_EQ(4u, s.size()); - ASSERT_EQ(0u, static_cast<uint8_t>(s[0])); - ASSERT_EQ(1u, static_cast<uint8_t>(s[1])); - ASSERT_EQ(0u, static_cast<uint8_t>(s[2])); - ASSERT_EQ(2u, static_cast<uint8_t>(s[3])); + CheckBlob(s); ASSERT_FALSE(db.DequeueValue(s, *manager, "test", true));