diff UnitTestsSources/SortedFramesTests.cpp @ 1631:960bb5fcc440

SortedFrames::GetFrameGeometry()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 09 Nov 2020 18:49:08 +0100
parents b2941196cabf
children 4796fb60999e
line wrap: on
line diff
--- a/UnitTestsSources/SortedFramesTests.cpp	Mon Nov 09 18:01:32 2020 +0100
+++ b/UnitTestsSources/SortedFramesTests.cpp	Mon Nov 09 18:49:08 2020 +0100
@@ -245,6 +245,47 @@
 }
 
 
+TEST(SortedFrames, FrameOffset)
+{
+  Orthanc::DicomMap tags;
+  tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false);
+  tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "1.2.276.0.7230010.3.1.4.296485376.1.1568899779.944133", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_POSITION_PATIENT, "-350\\-145\\-985", false);
+  tags.SetValue(Orthanc::DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "1\\0\\0\\0\\1\\0", false);
+  tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false);
+
+  for (unsigned int i = 0; i < 3; i++)
+  {
+    tags.SetValue(Orthanc::DICOM_TAG_FRAME_INCREMENT_POINTER, i != 1 ? "3004,000c" : "nope", false);
+    tags.SetValue(Orthanc::DICOM_TAG_GRID_FRAME_OFFSET_VECTOR, i != 2 ? "8\\11" : "1\\2\\3", false);
+
+    OrthancStone::SortedFrames f;
+    f.AddInstance(tags);
+    f.Sort();
+
+    ASSERT_EQ(2u, f.GetFramesCount());
+    ASSERT_TRUE(f.GetFrameGeometry(0).IsValid());
+    ASSERT_TRUE(f.GetFrameGeometry(1).IsValid());
+    ASSERT_FLOAT_EQ(-350.0f, f.GetFrameGeometry(0).GetOrigin() [0]);
+    ASSERT_FLOAT_EQ(-145.0f, f.GetFrameGeometry(0).GetOrigin() [1]);
+    ASSERT_FLOAT_EQ(-350.0f, f.GetFrameGeometry(1).GetOrigin() [0]);
+    ASSERT_FLOAT_EQ(-145.0f, f.GetFrameGeometry(1).GetOrigin() [1]);
+
+    if (i == 0)
+    {
+      ASSERT_FLOAT_EQ(-985.0f + 8.0f, f.GetFrameGeometry(0).GetOrigin() [2]);
+      ASSERT_FLOAT_EQ(-985.0f + 11.0f, f.GetFrameGeometry(1).GetOrigin() [2]);
+    }
+    else
+    {
+      ASSERT_FLOAT_EQ(-985.0f, f.GetFrameGeometry(0).GetOrigin() [2]);
+      ASSERT_FLOAT_EQ(-985.0f, f.GetFrameGeometry(1).GetOrigin() [2]);
+    }
+  }
+}
+
+
 TEST(SortedFrames, Knix)  // Created using "SortedFramesCreateTest.py"
 {
   Orthanc::DicomMap tags;