Mercurial > hg > orthanc
diff UnitTestsSources/MemoryCacheTests.cpp @ 1367:fe6e5a9f1ea2 query-retrieve
SharedArchive
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 22 May 2015 17:40:10 +0200 |
parents | 6e7e5ed91c2d |
children | f967bdf8534e |
line wrap: on
line diff
--- a/UnitTestsSources/MemoryCacheTests.cpp Fri May 22 16:17:28 2015 +0200 +++ b/UnitTestsSources/MemoryCacheTests.cpp Fri May 22 17:40:10 2015 +0200 @@ -39,6 +39,7 @@ #include <boost/lexical_cast.hpp> #include "../Core/IDynamicObject.h" #include "../Core/Cache/MemoryCache.h" +#include "../Core/Cache/SharedArchive.h" TEST(LRU, Basic) @@ -228,3 +229,66 @@ ASSERT_EQ("45 42 43 47 44 42 ", provider.log_); } + + + + + + + +namespace +{ + class S : public Orthanc::IDynamicObject + { + private: + std::string value_; + + public: + S(const std::string& value) : value_(value) + { + } + + const std::string& GetValue() const + { + return value_; + } + + static const std::string& Access(const Orthanc::IDynamicObject& obj) + { + return dynamic_cast<const S&>(obj).GetValue(); + } + }; +} + + +TEST(LRU, SharedArchive) +{ + std::string first, second; + Orthanc::SharedArchive a(3); + first = a.Add(new S("First item")); + second = a.Add(new S("Second item")); + + for (int i = 1; i < 100; i++) + { + a.Add(new S("Item " + boost::lexical_cast<std::string>(i))); + // Continuously protect the two first items + try { Orthanc::SharedArchive::Accessor(a, first); } catch (Orthanc::OrthancException&) {} + try { Orthanc::SharedArchive::Accessor(a, second); } catch (Orthanc::OrthancException&) {} + } + + std::list<std::string> i; + a.List(i); + + size_t count = 0; + for (std::list<std::string>::const_iterator + it = i.begin(); it != i.end(); it++) + { + if (*it == first || + *it == second) + { + count++; + } + } + + ASSERT_EQ(2, count); +}