Mercurial > hg > orthanc-stone
comparison UnitTestsSources/SortedFramesTests.cpp @ 1645:bc7bd8ee13f8
making private two potentially dangerous methods in SortedFrames
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 10 Nov 2020 21:07:05 +0100 |
parents | 4796fb60999e |
children | 9ac2a65d4172 |
comparison
equal
deleted
inserted
replaced
1644:4796fb60999e | 1645:bc7bd8ee13f8 |
---|---|
17 * You should have received a copy of the GNU Affero General Public License | 17 * You should have received a copy of the GNU Affero General Public License |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 **/ | 19 **/ |
20 | 20 |
21 | 21 |
22 // Make sure to define FRIEND_TEST before including "SortedFrames.h" | |
22 #include <gtest/gtest.h> | 23 #include <gtest/gtest.h> |
23 | 24 |
24 #include "../OrthancStone/Sources/Toolbox/SortedFrames.h" | 25 #include "../OrthancStone/Sources/Toolbox/SortedFrames.h" |
25 | 26 |
26 #include <OrthancException.h> | 27 #include <OrthancException.h> |
27 | 28 |
28 | 29 |
29 TEST(SortedFrames, Basic) | 30 // Namespace is necessary for FRIEND_TEST() to work in "SortedFrames.h" |
31 namespace OrthancStone | |
30 { | 32 { |
31 OrthancStone::SortedFrames f; | 33 TEST(SortedFrames, Basic) |
32 ASSERT_TRUE(f.GetStudyInstanceUid().empty()); | 34 { |
33 ASSERT_TRUE(f.GetSeriesInstanceUid().empty()); | 35 SortedFrames f; |
34 ASSERT_EQ(0u, f.GetInstancesCount()); | 36 ASSERT_TRUE(f.GetStudyInstanceUid().empty()); |
35 ASSERT_THROW(f.GetInstance(0).GetTags(), Orthanc::OrthancException); | 37 ASSERT_TRUE(f.GetSeriesInstanceUid().empty()); |
36 ASSERT_THROW(f.GetInstance(0).GetSopInstanceUid(), Orthanc::OrthancException); | 38 ASSERT_EQ(0u, f.GetInstancesCount()); |
37 ASSERT_TRUE(f.IsSorted()); | 39 ASSERT_THROW(f.GetInstance(0).GetTags(), Orthanc::OrthancException); |
38 ASSERT_EQ(0u, f.GetFramesCount()); | 40 ASSERT_THROW(f.GetInstance(0).GetSopInstanceUid(), Orthanc::OrthancException); |
39 ASSERT_THROW(f.GetInstanceOfFrame(0).GetTags(), Orthanc::OrthancException); | 41 ASSERT_TRUE(f.IsSorted()); |
40 ASSERT_THROW(f.GetInstanceOfFrame(0).GetSopInstanceUid(), Orthanc::OrthancException); | 42 ASSERT_EQ(0u, f.GetFramesCount()); |
41 ASSERT_THROW(f.GetInstanceOfFrame(0).GetNumberOfFrames(), Orthanc::OrthancException); | 43 ASSERT_THROW(f.GetInstanceOfFrame(0).GetTags(), Orthanc::OrthancException); |
42 ASSERT_THROW(f.GetFrameNumberInInstance(0), Orthanc::OrthancException); | 44 ASSERT_THROW(f.GetInstanceOfFrame(0).GetSopInstanceUid(), Orthanc::OrthancException); |
43 | 45 ASSERT_THROW(f.GetInstanceOfFrame(0).GetNumberOfFrames(), Orthanc::OrthancException); |
44 Orthanc::DicomMap tags; | 46 ASSERT_THROW(f.GetFrameNumberInInstance(0), Orthanc::OrthancException); |
45 ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException); | 47 |
46 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); | 48 Orthanc::DicomMap tags; |
47 ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException); | 49 ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException); |
48 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); | 50 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); |
49 ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException); | 51 ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException); |
50 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop", false); | 52 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); |
51 f.AddInstance(tags); | 53 ASSERT_THROW(f.AddInstance(tags), Orthanc::OrthancException); |
52 | 54 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop", false); |
53 ASSERT_EQ("study", f.GetStudyInstanceUid()); | 55 f.AddInstance(tags); |
54 ASSERT_EQ("series", f.GetSeriesInstanceUid()); | 56 |
55 ASSERT_EQ(1u, f.GetInstancesCount()); | 57 ASSERT_EQ("study", f.GetStudyInstanceUid()); |
56 std::string s; | 58 ASSERT_EQ("series", f.GetSeriesInstanceUid()); |
57 ASSERT_TRUE(f.GetInstance(0).GetTags().LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false)); | 59 ASSERT_EQ(1u, f.GetInstancesCount()); |
58 ASSERT_EQ("sop", s); | 60 std::string s; |
59 ASSERT_EQ("sop", f.GetInstance(0).GetSopInstanceUid()); | 61 ASSERT_TRUE(f.GetInstance(0).GetTags().LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false)); |
60 ASSERT_FALSE(f.IsSorted()); | 62 ASSERT_EQ("sop", s); |
61 ASSERT_THROW(f.GetFramesCount(), Orthanc::OrthancException); | 63 ASSERT_EQ("sop", f.GetInstance(0).GetSopInstanceUid()); |
62 ASSERT_THROW(f.GetInstanceOfFrame(0).GetTags(), Orthanc::OrthancException); | 64 ASSERT_FALSE(f.IsSorted()); |
63 ASSERT_THROW(f.GetInstanceOfFrame(0).GetSopInstanceUid(), Orthanc::OrthancException); | 65 ASSERT_THROW(f.GetFramesCount(), Orthanc::OrthancException); |
64 ASSERT_THROW(f.GetInstanceOfFrame(0).GetNumberOfFrames(), Orthanc::OrthancException); | 66 ASSERT_THROW(f.GetInstanceOfFrame(0).GetTags(), Orthanc::OrthancException); |
65 ASSERT_THROW(f.GetFrameNumberInInstance(0), Orthanc::OrthancException); | 67 ASSERT_THROW(f.GetInstanceOfFrame(0).GetSopInstanceUid(), Orthanc::OrthancException); |
66 | 68 ASSERT_THROW(f.GetInstanceOfFrame(0).GetNumberOfFrames(), Orthanc::OrthancException); |
67 f.Sort(); | 69 ASSERT_THROW(f.GetFrameNumberInInstance(0), Orthanc::OrthancException); |
68 ASSERT_TRUE(f.IsSorted()); | 70 |
69 ASSERT_EQ(1u, f.GetFramesCount()); | 71 f.Sort(); |
70 ASSERT_TRUE(f.GetInstanceOfFrame(0).GetTags().LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false)); | 72 ASSERT_TRUE(f.IsSorted()); |
71 ASSERT_EQ("sop", s); | 73 ASSERT_EQ(1u, f.GetFramesCount()); |
72 ASSERT_EQ("sop", f.GetInstanceOfFrame(0).GetSopInstanceUid()); | 74 ASSERT_TRUE(f.GetInstanceOfFrame(0).GetTags().LookupStringValue(s, Orthanc::DICOM_TAG_SOP_INSTANCE_UID, false)); |
73 ASSERT_EQ(1u, f.GetInstanceOfFrame(0).GetNumberOfFrames()); | 75 ASSERT_EQ("sop", s); |
74 ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); | 76 ASSERT_EQ("sop", f.GetInstanceOfFrame(0).GetSopInstanceUid()); |
75 ASSERT_THROW(f.GetInstanceOfFrame(1).GetTags(), Orthanc::OrthancException); | 77 ASSERT_EQ(1u, f.GetInstanceOfFrame(0).GetNumberOfFrames()); |
76 } | 78 ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); |
77 | 79 ASSERT_THROW(f.GetInstanceOfFrame(1).GetTags(), Orthanc::OrthancException); |
78 | 80 } |
79 TEST(SortedFrames, SortSopInstanceUid) | 81 |
80 { | 82 |
81 Orthanc::DicomMap tags; | 83 TEST(SortedFrames, SortSopInstanceUid) |
82 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); | 84 { |
83 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); | 85 Orthanc::DicomMap tags; |
86 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); | |
87 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); | |
84 | 88 |
85 OrthancStone::SortedFrames f; | 89 SortedFrames f; |
86 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false); | 90 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false); |
87 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "1", false); | 91 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "1", false); |
88 f.AddInstance(tags); | 92 f.AddInstance(tags); |
89 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false); | 93 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false); |
90 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "3", false); | 94 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "3", false); |
91 f.AddInstance(tags); | 95 f.AddInstance(tags); |
92 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); | 96 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); |
93 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false); | 97 tags.SetValue(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES, "2", false); |
94 f.AddInstance(tags); | 98 f.AddInstance(tags); |
95 | 99 |
96 size_t i; | 100 size_t i; |
97 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i); | 101 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i); |
98 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i); | 102 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i); |
99 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i); | 103 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i); |
100 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); | 104 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); |
101 | 105 |
102 ASSERT_THROW(f.LookupFrame(i, "sop3", 0), Orthanc::OrthancException); // Not sorted yet | 106 ASSERT_THROW(f.LookupFrame(i, "sop3", 0), Orthanc::OrthancException); // Not sorted yet |
103 | 107 |
104 f.Sort(); | 108 f.Sort(); |
105 ASSERT_EQ(3u, f.GetInstancesCount()); | 109 ASSERT_EQ(3u, f.GetInstancesCount()); |
106 ASSERT_EQ("sop3", f.GetInstance(0).GetSopInstanceUid()); | 110 ASSERT_EQ("sop3", f.GetInstance(0).GetSopInstanceUid()); |
107 ASSERT_EQ("sop1", f.GetInstance(1).GetSopInstanceUid()); | 111 ASSERT_EQ("sop1", f.GetInstance(1).GetSopInstanceUid()); |
108 ASSERT_EQ("sop2", f.GetInstance(2).GetSopInstanceUid()); | 112 ASSERT_EQ("sop2", f.GetInstance(2).GetSopInstanceUid()); |
109 ASSERT_EQ(6u, f.GetFramesCount()); | 113 ASSERT_EQ(6u, f.GetFramesCount()); |
110 ASSERT_EQ("sop1", f.GetInstanceOfFrame(0).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); | 114 ASSERT_EQ("sop1", f.GetInstanceOfFrame(0).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); |
111 ASSERT_EQ("sop1", f.GetInstanceOfFrame(1).GetSopInstanceUid()); ASSERT_EQ(1u, f.GetFrameNumberInInstance(1)); | 115 ASSERT_EQ("sop1", f.GetInstanceOfFrame(1).GetSopInstanceUid()); ASSERT_EQ(1u, f.GetFrameNumberInInstance(1)); |
112 ASSERT_EQ("sop1", f.GetInstanceOfFrame(2).GetSopInstanceUid()); ASSERT_EQ(2u, f.GetFrameNumberInInstance(2)); | 116 ASSERT_EQ("sop1", f.GetInstanceOfFrame(2).GetSopInstanceUid()); ASSERT_EQ(2u, f.GetFrameNumberInInstance(2)); |
113 ASSERT_EQ("sop2", f.GetInstanceOfFrame(3).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); | 117 ASSERT_EQ("sop2", f.GetInstanceOfFrame(3).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); |
114 ASSERT_EQ("sop2", f.GetInstanceOfFrame(4).GetSopInstanceUid()); ASSERT_EQ(1u, f.GetFrameNumberInInstance(4)); | 118 ASSERT_EQ("sop2", f.GetInstanceOfFrame(4).GetSopInstanceUid()); ASSERT_EQ(1u, f.GetFrameNumberInInstance(4)); |
115 ASSERT_EQ("sop3", f.GetInstanceOfFrame(5).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(5)); | 119 ASSERT_EQ("sop3", f.GetInstanceOfFrame(5).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(5)); |
116 | 120 |
117 // The instances must not have been reordered, only the frames | 121 // The instances must not have been reordered, only the frames |
118 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i); | 122 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(1u, i); |
119 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i); | 123 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(2u, i); |
120 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i); | 124 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(0u, i); |
121 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); | 125 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); |
122 | 126 |
123 ASSERT_TRUE(f.LookupFrame(i, "sop1", 0)); ASSERT_EQ(0u, i); | 127 ASSERT_TRUE(f.LookupFrame(i, "sop1", 0)); ASSERT_EQ(0u, i); |
124 ASSERT_TRUE(f.LookupFrame(i, "sop1", 1)); ASSERT_EQ(1u, i); | 128 ASSERT_TRUE(f.LookupFrame(i, "sop1", 1)); ASSERT_EQ(1u, i); |
125 ASSERT_TRUE(f.LookupFrame(i, "sop1", 2)); ASSERT_EQ(2u, i); | 129 ASSERT_TRUE(f.LookupFrame(i, "sop1", 2)); ASSERT_EQ(2u, i); |
126 ASSERT_TRUE(f.LookupFrame(i, "sop2", 0)); ASSERT_EQ(3u, i); | 130 ASSERT_TRUE(f.LookupFrame(i, "sop2", 0)); ASSERT_EQ(3u, i); |
127 ASSERT_TRUE(f.LookupFrame(i, "sop2", 1)); ASSERT_EQ(4u, i); | 131 ASSERT_TRUE(f.LookupFrame(i, "sop2", 1)); ASSERT_EQ(4u, i); |
128 ASSERT_TRUE(f.LookupFrame(i, "sop3", 0)); ASSERT_EQ(5u, i); | 132 ASSERT_TRUE(f.LookupFrame(i, "sop3", 0)); ASSERT_EQ(5u, i); |
129 | 133 |
130 ASSERT_FALSE(f.LookupFrame(i, "nope", 0)); | 134 ASSERT_FALSE(f.LookupFrame(i, "nope", 0)); |
131 ASSERT_FALSE(f.LookupFrame(i, "sop1", 3)); | 135 ASSERT_FALSE(f.LookupFrame(i, "sop1", 3)); |
132 ASSERT_FALSE(f.LookupFrame(i, "sop2", 2)); | 136 ASSERT_FALSE(f.LookupFrame(i, "sop2", 2)); |
133 ASSERT_FALSE(f.LookupFrame(i, "sop3", 1)); | 137 ASSERT_FALSE(f.LookupFrame(i, "sop3", 1)); |
134 } | 138 } |
135 | 139 |
136 | 140 |
137 TEST(SortedFrames, SortInstanceNumber) | 141 TEST(SortedFrames, SortInstanceNumber) |
138 { | 142 { |
139 Orthanc::DicomMap tags; | 143 Orthanc::DicomMap tags; |
140 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); | 144 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); |
141 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); | 145 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); |
142 | 146 |
143 OrthancStone::SortedFrames f; | 147 SortedFrames f; |
144 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false); | 148 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false); |
145 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false); | 149 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false); |
146 f.AddInstance(tags); | 150 f.AddInstance(tags); |
147 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); | 151 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); |
148 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "-20", false); | 152 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "-20", false); |
149 f.AddInstance(tags); | 153 f.AddInstance(tags); |
150 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2a", false); | 154 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2a", false); |
151 tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER); | 155 tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER); |
152 f.AddInstance(tags); | 156 f.AddInstance(tags); |
153 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false); | 157 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false); |
154 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); | 158 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); |
155 f.AddInstance(tags); | 159 f.AddInstance(tags); |
156 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false); | 160 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false); |
157 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); | 161 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); |
158 f.AddInstance(tags); | 162 f.AddInstance(tags); |
159 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop5", false); | 163 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop5", false); |
160 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); | 164 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "10", false); |
161 f.AddInstance(tags); | 165 f.AddInstance(tags); |
162 | 166 |
163 size_t i; | 167 size_t i; |
164 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(0u, i); | 168 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(0u, i); |
165 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(1u, i); | 169 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(1u, i); |
166 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2a")); ASSERT_EQ(2u, i); | 170 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2a")); ASSERT_EQ(2u, i); |
167 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop4")); ASSERT_EQ(3u, i); | 171 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop4")); ASSERT_EQ(3u, i); |
168 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(4u, i); | 172 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(4u, i); |
169 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop5")); ASSERT_EQ(5u, i); | 173 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop5")); ASSERT_EQ(5u, i); |
170 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); | 174 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); |
171 | 175 |
172 ASSERT_THROW(f.LookupFrame(i, "sop1", 0), Orthanc::OrthancException); // Not sorted yet | 176 ASSERT_THROW(f.LookupFrame(i, "sop1", 0), Orthanc::OrthancException); // Not sorted yet |
173 | 177 |
174 f.Sort(); | 178 f.Sort(); |
175 ASSERT_EQ(6u, f.GetInstancesCount()); | 179 ASSERT_EQ(6u, f.GetInstancesCount()); |
176 ASSERT_EQ("sop1", f.GetInstance(0).GetSopInstanceUid()); | 180 ASSERT_EQ("sop1", f.GetInstance(0).GetSopInstanceUid()); |
177 ASSERT_EQ("sop2", f.GetInstance(1).GetSopInstanceUid()); | 181 ASSERT_EQ("sop2", f.GetInstance(1).GetSopInstanceUid()); |
178 ASSERT_EQ("sop2a", f.GetInstance(2).GetSopInstanceUid()); | 182 ASSERT_EQ("sop2a", f.GetInstance(2).GetSopInstanceUid()); |
179 ASSERT_EQ("sop4", f.GetInstance(3).GetSopInstanceUid()); | 183 ASSERT_EQ("sop4", f.GetInstance(3).GetSopInstanceUid()); |
180 ASSERT_EQ("sop3", f.GetInstance(4).GetSopInstanceUid()); | 184 ASSERT_EQ("sop3", f.GetInstance(4).GetSopInstanceUid()); |
181 ASSERT_EQ("sop5", f.GetInstance(5).GetSopInstanceUid()); | 185 ASSERT_EQ("sop5", f.GetInstance(5).GetSopInstanceUid()); |
182 ASSERT_EQ(6u, f.GetFramesCount()); | 186 ASSERT_EQ(6u, f.GetFramesCount()); |
183 ASSERT_EQ("sop2", f.GetInstanceOfFrame(0).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); | 187 ASSERT_EQ("sop2", f.GetInstanceOfFrame(0).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); |
184 ASSERT_EQ("sop3", f.GetInstanceOfFrame(1).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(1)); | 188 ASSERT_EQ("sop3", f.GetInstanceOfFrame(1).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(1)); |
185 ASSERT_EQ("sop4", f.GetInstanceOfFrame(2).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(2)); | 189 ASSERT_EQ("sop4", f.GetInstanceOfFrame(2).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(2)); |
186 ASSERT_EQ("sop5", f.GetInstanceOfFrame(3).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); | 190 ASSERT_EQ("sop5", f.GetInstanceOfFrame(3).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); |
187 ASSERT_EQ("sop1", f.GetInstanceOfFrame(4).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(4)); | 191 ASSERT_EQ("sop1", f.GetInstanceOfFrame(4).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(4)); |
188 ASSERT_EQ("sop2a", f.GetInstanceOfFrame(5).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(5)); | 192 ASSERT_EQ("sop2a", f.GetInstanceOfFrame(5).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(5)); |
189 | 193 |
190 // The instances must not have been reordered, only the frames | 194 // The instances must not have been reordered, only the frames |
191 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(0u, i); | 195 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop1")); ASSERT_EQ(0u, i); |
192 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(1u, i); | 196 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2")); ASSERT_EQ(1u, i); |
193 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2a")); ASSERT_EQ(2u, i); | 197 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop2a")); ASSERT_EQ(2u, i); |
194 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop4")); ASSERT_EQ(3u, i); | 198 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop4")); ASSERT_EQ(3u, i); |
195 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(4u, i); | 199 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop3")); ASSERT_EQ(4u, i); |
196 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop5")); ASSERT_EQ(5u, i); | 200 ASSERT_TRUE(f.LookupSopInstanceUid(i, "sop5")); ASSERT_EQ(5u, i); |
197 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); | 201 ASSERT_FALSE(f.LookupSopInstanceUid(i, "nope")); |
198 | 202 |
199 ASSERT_TRUE(f.LookupFrame(i, "sop2", 0)); ASSERT_EQ(0u, i); | 203 ASSERT_TRUE(f.LookupFrame(i, "sop2", 0)); ASSERT_EQ(0u, i); |
200 ASSERT_TRUE(f.LookupFrame(i, "sop3", 0)); ASSERT_EQ(1u, i); | 204 ASSERT_TRUE(f.LookupFrame(i, "sop3", 0)); ASSERT_EQ(1u, i); |
201 ASSERT_TRUE(f.LookupFrame(i, "sop4", 0)); ASSERT_EQ(2u, i); | 205 ASSERT_TRUE(f.LookupFrame(i, "sop4", 0)); ASSERT_EQ(2u, i); |
202 ASSERT_TRUE(f.LookupFrame(i, "sop5", 0)); ASSERT_EQ(3u, i); | 206 ASSERT_TRUE(f.LookupFrame(i, "sop5", 0)); ASSERT_EQ(3u, i); |
203 ASSERT_TRUE(f.LookupFrame(i, "sop1", 0)); ASSERT_EQ(4u, i); | 207 ASSERT_TRUE(f.LookupFrame(i, "sop1", 0)); ASSERT_EQ(4u, i); |
204 ASSERT_TRUE(f.LookupFrame(i, "sop2a", 0)); ASSERT_EQ(5u, i); | 208 ASSERT_TRUE(f.LookupFrame(i, "sop2a", 0)); ASSERT_EQ(5u, i); |
205 | 209 |
206 ASSERT_FALSE(f.LookupFrame(i, "nope", 0)); | 210 ASSERT_FALSE(f.LookupFrame(i, "nope", 0)); |
207 ASSERT_FALSE(f.LookupFrame(i, "sop1", 1)); | 211 ASSERT_FALSE(f.LookupFrame(i, "sop1", 1)); |
208 } | 212 } |
209 | 213 |
210 | 214 |
211 TEST(SortedFrames, SortInstanceNumberAndImageIndex) | 215 TEST(SortedFrames, SortInstanceNumberAndImageIndex) |
212 { | 216 { |
213 Orthanc::DicomMap tags; | 217 Orthanc::DicomMap tags; |
214 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); | 218 tags.SetValue(Orthanc::DICOM_TAG_STUDY_INSTANCE_UID, "study", false); |
215 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); | 219 tags.SetValue(Orthanc::DICOM_TAG_SERIES_INSTANCE_UID, "series", false); |
216 | 220 |
217 OrthancStone::SortedFrames f; | 221 SortedFrames f; |
218 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false); | 222 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop1", false); |
219 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false); | 223 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "20", false); |
220 f.AddInstance(tags); | 224 f.AddInstance(tags); |
221 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); | 225 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop2", false); |
222 tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER); | 226 tags.Remove(Orthanc::DICOM_TAG_INSTANCE_NUMBER); |
223 tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "20", false); | 227 tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "20", false); |
224 f.AddInstance(tags); | 228 f.AddInstance(tags); |
225 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false); | 229 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop3", false); |
226 tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "30", false); | 230 tags.SetValue(Orthanc::DICOM_TAG_IMAGE_INDEX, "30", false); |
227 f.AddInstance(tags); | 231 f.AddInstance(tags); |
228 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false); | 232 tags.SetValue(Orthanc::DICOM_TAG_SOP_INSTANCE_UID, "sop4", false); |
229 tags.Remove(Orthanc::DICOM_TAG_IMAGE_INDEX); | 233 tags.Remove(Orthanc::DICOM_TAG_IMAGE_INDEX); |
230 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "30", false); | 234 tags.SetValue(Orthanc::DICOM_TAG_INSTANCE_NUMBER, "30", false); |
231 f.AddInstance(tags); | 235 f.AddInstance(tags); |
232 | 236 |
233 f.Sort(); | 237 f.Sort(); |
234 ASSERT_EQ(4u, f.GetInstancesCount()); | 238 ASSERT_EQ(4u, f.GetInstancesCount()); |
235 ASSERT_EQ("sop1", f.GetInstance(0).GetSopInstanceUid()); | 239 ASSERT_EQ("sop1", f.GetInstance(0).GetSopInstanceUid()); |
236 ASSERT_EQ("sop2", f.GetInstance(1).GetSopInstanceUid()); | 240 ASSERT_EQ("sop2", f.GetInstance(1).GetSopInstanceUid()); |
237 ASSERT_EQ("sop3", f.GetInstance(2).GetSopInstanceUid()); | 241 ASSERT_EQ("sop3", f.GetInstance(2).GetSopInstanceUid()); |
238 ASSERT_EQ("sop4", f.GetInstance(3).GetSopInstanceUid()); | 242 ASSERT_EQ("sop4", f.GetInstance(3).GetSopInstanceUid()); |
239 ASSERT_EQ(4u, f.GetFramesCount()); | 243 ASSERT_EQ(4u, f.GetFramesCount()); |
240 // First instance number, then image index | 244 // First instance number, then image index |
241 ASSERT_EQ("sop1", f.GetInstanceOfFrame(0).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); | 245 ASSERT_EQ("sop1", f.GetInstanceOfFrame(0).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(0)); |
242 ASSERT_EQ("sop4", f.GetInstanceOfFrame(1).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(1)); | 246 ASSERT_EQ("sop4", f.GetInstanceOfFrame(1).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(1)); |
243 ASSERT_EQ("sop2", f.GetInstanceOfFrame(2).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(2)); | 247 ASSERT_EQ("sop2", f.GetInstanceOfFrame(2).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(2)); |
244 ASSERT_EQ("sop3", f.GetInstanceOfFrame(3).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); | 248 ASSERT_EQ("sop3", f.GetInstanceOfFrame(3).GetSopInstanceUid()); ASSERT_EQ(0u, f.GetFrameNumberInInstance(3)); |
249 } | |
245 } | 250 } |
246 | 251 |
247 | 252 |
248 TEST(SortedFrames, FrameOffset) | 253 TEST(SortedFrames, FrameOffset) |
249 { | 254 { |