comparison UnitTestsSources/SortedFramesTests.cpp @ 1602:b2941196cabf

SortedFrames::LookupFrame()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 28 Oct 2020 16:35:45 +0100
parents 1704341bb96e
children 960bb5fcc440
comparison
equal deleted inserted replaced
1601:1704341bb96e 1602:b2941196cabf
92 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); 92 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false);
93 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false); 93 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false);
94 f.AddInstance(tags); 94 f.AddInstance(tags);
95 95
96 size_t i; 96 size_t i;
97 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i);
97 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i); 98 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i);
98 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i); 99 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i);
99 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i);
100 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); 100 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope"));
101 101
102 ASSERT_THROW(f.LookupFrame(i, "sop3", 0), Orthanc::OrthancException); // Not sorted yet
103
102 f.Sort(); 104 f.Sort();
103 ASSERT_EQ(3u, f.GetInstancesCount()); 105 ASSERT_EQ(3u, f.GetInstancesCount());
104 ASSERT_EQ("sop3", f.GetSopInstanceUid(0)); 106 ASSERT_EQ("sop3", f.GetSopInstanceUid(0));
105 ASSERT_EQ("sop1", f.GetSopInstanceUid(1)); 107 ASSERT_EQ("sop1", f.GetSopInstanceUid(1));
106 ASSERT_EQ("sop2", f.GetSopInstanceUid(2)); 108 ASSERT_EQ("sop2", f.GetSopInstanceUid(2));
115 // The instances must not have been reordered, only the frames 117 // The instances must not have been reordered, only the frames
116 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i); 118 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i);
117 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i); 119 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i);
118 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i); 120 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i);
119 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); 121 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope"));
122
123 ASSERT_TRUE(f.LookupFrame(i, "sop1", 0)); ASSERT_EQ(0u, i);
124 ASSERT_TRUE(f.LookupFrame(i, "sop1", 1)); ASSERT_EQ(1u, i);
125 ASSERT_TRUE(f.LookupFrame(i, "sop1", 2)); ASSERT_EQ(2u, i);
126 ASSERT_TRUE(f.LookupFrame(i, "sop2", 0)); ASSERT_EQ(3u, i);
127 ASSERT_TRUE(f.LookupFrame(i, "sop2", 1)); ASSERT_EQ(4u, i);
128 ASSERT_TRUE(f.LookupFrame(i, "sop3", 0)); ASSERT_EQ(5u, i);
129
130 ASSERT_FALSE(f.LookupFrame(i, "nope", 0));
131 ASSERT_FALSE(f.LookupFrame(i, "sop1", 3));
132 ASSERT_FALSE(f.LookupFrame(i, "sop2", 2));
133 ASSERT_FALSE(f.LookupFrame(i, "sop3", 1));
120 } 134 }
121 135
122 136
123 TEST(SortedFrames, SortInstanceNumber) 137 TEST(SortedFrames, SortInstanceNumber)
124 { 138 {
144 f.AddInstance(tags); 158 f.AddInstance(tags);
145 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop5", false); 159 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop5", false);
146 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); 160 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false);
147 f.AddInstance(tags); 161 f.AddInstance(tags);
148 162
163 size_t i;
164 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(0u, i);
165 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(1u, i);
166 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2a")); ASSERT_EQ(2u, i);
167 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop4")); ASSERT_EQ(3u, i);
168 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(4u, i);
169 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop5")); ASSERT_EQ(5u, i);
170 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope"));
171
172 ASSERT_THROW(f.LookupFrame(i, "sop1", 0), Orthanc::OrthancException); // Not sorted yet
173
149 f.Sort(); 174 f.Sort();
150 ASSERT_EQ(6u, f.GetInstancesCount()); 175 ASSERT_EQ(6u, f.GetInstancesCount());
151 ASSERT_EQ("sop1", f.GetSopInstanceUid(0)); 176 ASSERT_EQ("sop1", f.GetSopInstanceUid(0));
152 ASSERT_EQ("sop2", f.GetSopInstanceUid(1)); 177 ASSERT_EQ("sop2", f.GetSopInstanceUid(1));
153 ASSERT_EQ("sop2a", f.GetSopInstanceUid(2)); 178 ASSERT_EQ("sop2a", f.GetSopInstanceUid(2));
158 ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(0)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); 183 ASSERT_EQ("sop2", f.GetFrameSopInstanceUid(0)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0));
159 ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(1)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(1)); 184 ASSERT_EQ("sop3", f.GetFrameSopInstanceUid(1)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(1));
160 ASSERT_EQ("sop4", f.GetFrameSopInstanceUid(2)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(2)); 185 ASSERT_EQ("sop4", f.GetFrameSopInstanceUid(2)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(2));
161 ASSERT_EQ("sop5", f.GetFrameSopInstanceUid(3)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); 186 ASSERT_EQ("sop5", f.GetFrameSopInstanceUid(3)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3));
162 ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(4)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(4)); 187 ASSERT_EQ("sop1", f.GetFrameSopInstanceUid(4)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(4));
163 ASSERT_EQ("sop2a", f.GetFrameSopInstanceUid(5)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(5)); 188 ASSERT_EQ("sop2a", f.GetFrameSopInstanceUid(5)); ASSERT_EQ(0u, f.GetFrameNumberInInstance(5));
189
190 // The instances must not have been reordered, only the frames
191 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(0u, i);
192 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(1u, i);
193 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2a")); ASSERT_EQ(2u, i);
194 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop4")); ASSERT_EQ(3u, i);
195 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(4u, i);
196 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop5")); ASSERT_EQ(5u, i);
197 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope"));
198
199 ASSERT_TRUE(f.LookupFrame(i, "sop2", 0)); ASSERT_EQ(0u, i);
200 ASSERT_TRUE(f.LookupFrame(i, "sop3", 0)); ASSERT_EQ(1u, i);
201 ASSERT_TRUE(f.LookupFrame(i, "sop4", 0)); ASSERT_EQ(2u, i);
202 ASSERT_TRUE(f.LookupFrame(i, "sop5", 0)); ASSERT_EQ(3u, i);
203 ASSERT_TRUE(f.LookupFrame(i, "sop1", 0)); ASSERT_EQ(4u, i);
204 ASSERT_TRUE(f.LookupFrame(i, "sop2a", 0)); ASSERT_EQ(5u, i);
205
206 ASSERT_FALSE(f.LookupFrame(i, "nope", 0));
207 ASSERT_FALSE(f.LookupFrame(i, "sop1", 1));
164 } 208 }
165 209
166 210
167 TEST(SortedFrames, SortInstanceNumberAndImageIndex) 211 TEST(SortedFrames, SortInstanceNumberAndImageIndex)
168 { 212 {