diff OrthancFramework/UnitTestsSources/FrameworkTests.cpp @ 4342:52166629239f

SystemToolbox::ReadFileRange()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 03 Dec 2020 18:48:06 +0100
parents a01b1c9cbef4
children 80fd140b12ba
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/FrameworkTests.cpp	Thu Dec 03 18:15:47 2020 +0100
+++ b/OrthancFramework/UnitTestsSources/FrameworkTests.cpp	Thu Dec 03 18:48:06 2020 +0100
@@ -1373,3 +1373,37 @@
   }
 }
 #endif
+
+
+#if ORTHANC_SANDBOXED != 1
+TEST(Toolbox, ReadFileRange)
+{
+  TemporaryFile tmp;
+  std::string s;
+
+  tmp.Write("");
+  tmp.Read(s);                     ASSERT_TRUE(s.empty());
+  tmp.ReadRange(s, 0, 0, true);    ASSERT_TRUE(s.empty());
+  tmp.ReadRange(s, 0, 10, false);  ASSERT_TRUE(s.empty());
+  
+  ASSERT_THROW(tmp.ReadRange(s, 0, 1, true), OrthancException);
+  
+  tmp.Write("Hello");
+  tmp.Read(s);                     ASSERT_EQ("Hello", s);
+  tmp.ReadRange(s, 0, 5, true);    ASSERT_EQ("Hello", s);
+  tmp.ReadRange(s, 0, 1, true);    ASSERT_EQ("H", s);
+  tmp.ReadRange(s, 1, 2, true);    ASSERT_EQ("e", s);
+  tmp.ReadRange(s, 2, 3, true);    ASSERT_EQ("l", s);
+  tmp.ReadRange(s, 3, 4, true);    ASSERT_EQ("l", s);
+  tmp.ReadRange(s, 4, 5, true);    ASSERT_EQ("o", s);
+  tmp.ReadRange(s, 2, 5, true);    ASSERT_EQ("llo", s);
+  tmp.ReadRange(s, 2, 50, false);  ASSERT_EQ("llo", s);
+  tmp.ReadRange(s, 2, 2, false);   ASSERT_TRUE(s.empty());
+  tmp.ReadRange(s, 10, 50, false); ASSERT_TRUE(s.empty());
+  
+  ASSERT_THROW(tmp.ReadRange(s, 5, 10, true), OrthancException);
+  ASSERT_THROW(tmp.ReadRange(s, 10, 50, true), OrthancException);
+  ASSERT_THROW(tmp.ReadRange(s, 50, 10, true), OrthancException);
+  ASSERT_THROW(tmp.ReadRange(s, 2, 1, true), OrthancException);
+}
+#endif