changeset 6346:24f66486186d

added unit test SystemToolbox.ReadRange to track an issue with LSB
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 22 Oct 2025 18:27:52 +0200
parents 37b2e9fac910
children 4364c26b0339
files OrthancFramework/UnitTestsSources/FileStorageTests.cpp
diffstat 1 files changed, 43 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/FileStorageTests.cpp	Wed Oct 22 07:49:26 2025 +0200
+++ b/OrthancFramework/UnitTestsSources/FileStorageTests.cpp	Wed Oct 22 18:27:52 2025 +0200
@@ -354,4 +354,46 @@
     ASSERT_EQ("o", s);
     ASSERT_THROW(StorageAccessor::Range::ParseHttpRange("bytes=5-").Extract(s, "Hello"), OrthancException);
   }
-}
\ No newline at end of file
+}
+
+
+TEST(SystemToolbox, ReadRange)
+{
+  const boost::filesystem::path path(SystemToolbox::PathFromUtf8("UnitTestsResults/hello.txt"));
+  SystemToolbox::WriteFile("abc", path);
+
+  std::string s;
+  SystemToolbox::ReadFileRange(s, path, 0, 1, true);
+  ASSERT_EQ(1u, s.size());
+  ASSERT_EQ('a', s[0]);
+
+  SystemToolbox::ReadFileRange(s, path, 1, 2, true);
+  ASSERT_EQ(1u, s.size());
+  ASSERT_EQ('b', s[0]);
+
+  SystemToolbox::ReadFileRange(s, path, 2, 3, true);
+  ASSERT_EQ(1u, s.size());
+  ASSERT_EQ('c', s[0]);
+
+  ASSERT_THROW(SystemToolbox::ReadFileRange(s, path, 3, 4, true), OrthancException);
+
+  SystemToolbox::ReadFileRange(s, path, 0, 2, true);
+  ASSERT_EQ(2u, s.size());
+  ASSERT_EQ('a', s[0]);
+  ASSERT_EQ('b', s[1]);
+
+  SystemToolbox::ReadFileRange(s, path, 1, 3, true);
+  ASSERT_EQ(2u, s.size());
+  ASSERT_EQ('b', s[0]);
+  ASSERT_EQ('c', s[1]);
+
+  ASSERT_THROW(SystemToolbox::ReadFileRange(s, path, 2, 4, true), OrthancException);
+
+  SystemToolbox::ReadFileRange(s, path, 0, 3, true);
+  ASSERT_EQ(3u, s.size());
+  ASSERT_EQ('a', s[0]);
+  ASSERT_EQ('b', s[1]);
+  ASSERT_EQ('c', s[2]);
+
+  ASSERT_THROW(SystemToolbox::ReadFileRange(s, path, 1, 4, true), OrthancException);
+}