Mercurial > hg > orthanc
comparison OrthancFramework/UnitTestsSources/DicomMapTests.cpp @ 5175:48005e522bd6
start fixing thread safety issues with DicomMap
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 24 Mar 2023 19:00:33 +0100 |
parents | a9ca92ecbbc2 |
children | 6d8647122ef3 |
comparison
equal
deleted
inserted
replaced
5174:d75af1cde602 | 5175:48005e522bd6 |
---|---|
88 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SERIES_INSTANCE_UID)); | 88 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SERIES_INSTANCE_UID)); |
89 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SOP_INSTANCE_UID)); | 89 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SOP_INSTANCE_UID)); |
90 } | 90 } |
91 | 91 |
92 { | 92 { |
93 const std::set<DicomTag>& s = DicomMap::GetMainDicomTags(ResourceType_Patient); | 93 std::set<DicomTag> s; |
94 DicomMap::GetMainDicomTags(s, ResourceType_Patient); | |
94 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_PATIENT_ID)); | 95 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_PATIENT_ID)); |
95 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_STUDY_INSTANCE_UID)); | 96 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_STUDY_INSTANCE_UID)); |
96 } | 97 } |
97 | 98 |
98 { | 99 { |
99 const std::set<DicomTag>& s = DicomMap::GetMainDicomTags(ResourceType_Study); | 100 std::set<DicomTag> s; |
101 DicomMap::GetMainDicomTags(s, ResourceType_Study); | |
100 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_STUDY_INSTANCE_UID)); | 102 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_STUDY_INSTANCE_UID)); |
101 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_ACCESSION_NUMBER)); | 103 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_ACCESSION_NUMBER)); |
102 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_PATIENT_ID)); | 104 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_PATIENT_ID)); |
103 } | 105 } |
104 | 106 |
105 { | 107 { |
106 const std::set<DicomTag>& s = DicomMap::GetMainDicomTags(ResourceType_Series); | 108 std::set<DicomTag> s; |
109 DicomMap::GetMainDicomTags(s, ResourceType_Series); | |
107 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SERIES_INSTANCE_UID)); | 110 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SERIES_INSTANCE_UID)); |
108 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_PATIENT_ID)); | 111 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_PATIENT_ID)); |
109 } | 112 } |
110 | 113 |
111 { | 114 { |
112 const std::set<DicomTag>& s = DicomMap::GetMainDicomTags(ResourceType_Instance); | 115 std::set<DicomTag> s; |
116 DicomMap::GetMainDicomTags(s, ResourceType_Instance); | |
113 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SOP_INSTANCE_UID)); | 117 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SOP_INSTANCE_UID)); |
114 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_PATIENT_ID)); | 118 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_PATIENT_ID)); |
115 } | 119 } |
116 } | 120 } |
117 | 121 |
118 TEST_F(DicomMapMainTagsTests, AddMainTags) | 122 TEST_F(DicomMapMainTagsTests, AddMainTags) |
119 { | 123 { |
120 DicomMap::AddMainDicomTag(DICOM_TAG_BITS_ALLOCATED, ResourceType_Instance); | 124 DicomMap::AddMainDicomTag(DICOM_TAG_BITS_ALLOCATED, ResourceType_Instance); |
121 | 125 |
122 { | 126 { |
123 const std::set<DicomTag>& s = DicomMap::GetMainDicomTags(ResourceType_Instance); | 127 std::set<DicomTag> s; |
128 DicomMap::GetMainDicomTags(s, ResourceType_Instance); | |
124 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_BITS_ALLOCATED)); | 129 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_BITS_ALLOCATED)); |
125 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SOP_INSTANCE_UID)); | 130 ASSERT_TRUE(s.end() != s.find(DICOM_TAG_SOP_INSTANCE_UID)); |
126 } | 131 } |
127 { | 132 { |
128 const std::set<DicomTag>& s = DicomMap::GetMainDicomTags(ResourceType_Series); | 133 std::set<DicomTag> s; |
134 DicomMap::GetMainDicomTags(s, ResourceType_Series); | |
129 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_BITS_ALLOCATED)); | 135 ASSERT_TRUE(s.end() == s.find(DICOM_TAG_BITS_ALLOCATED)); |
130 } | 136 } |
131 | 137 |
132 ASSERT_TRUE(DicomMap::IsMainDicomTag(DICOM_TAG_BITS_ALLOCATED)); | 138 ASSERT_TRUE(DicomMap::IsMainDicomTag(DICOM_TAG_BITS_ALLOCATED)); |
133 ASSERT_TRUE(DicomMap::IsMainDicomTag(DICOM_TAG_BITS_ALLOCATED, ResourceType_Instance)); | 139 ASSERT_TRUE(DicomMap::IsMainDicomTag(DICOM_TAG_BITS_ALLOCATED, ResourceType_Instance)); |
240 DicomModule module) | 246 DicomModule module) |
241 { | 247 { |
242 // REFERENCE: DICOM PS3.3 2015c - Information Object Definitions | 248 // REFERENCE: DICOM PS3.3 2015c - Information Object Definitions |
243 // http://dicom.nema.org/medical/dicom/current/output/html/part03.html | 249 // http://dicom.nema.org/medical/dicom/current/output/html/part03.html |
244 | 250 |
251 std::set<DicomTag> main; | |
252 DicomMap::GetMainDicomTags(main, level); | |
253 | |
245 std::set<DicomTag> moduleTags; | 254 std::set<DicomTag> moduleTags; |
246 const std::set<DicomTag>& main = DicomMap::GetMainDicomTags(level); | |
247 DicomTag::AddTagsForModule(moduleTags, module); | 255 DicomTag::AddTagsForModule(moduleTags, module); |
248 | 256 |
249 // The main dicom tags are a subset of the module | 257 // The main dicom tags are a subset of the module |
250 for (std::set<DicomTag>::const_iterator it = main.begin(); it != main.end(); ++it) | 258 for (std::set<DicomTag>::const_iterator it = main.begin(); it != main.end(); ++it) |
251 { | 259 { |
916 | 924 |
917 for (int i = ResourceType_Patient; i <= ResourceType_Instance; i++) | 925 for (int i = ResourceType_Patient; i <= ResourceType_Instance; i++) |
918 { | 926 { |
919 ResourceType level = static_cast<ResourceType>(i); | 927 ResourceType level = static_cast<ResourceType>(i); |
920 | 928 |
921 const std::set<DicomTag>& tags = DicomMap::GetMainDicomTags(level); | 929 std::set<DicomTag> tags; |
930 DicomMap::GetMainDicomTags(tags, level); | |
922 | 931 |
923 for (std::set<DicomTag>::const_iterator it = tags.begin(); it != tags.end(); ++it) | 932 for (std::set<DicomTag>::const_iterator it = tags.begin(); it != tags.end(); ++it) |
924 { | 933 { |
925 DicomMap a; | 934 DicomMap a; |
926 a.SetValue(*it, "TEST", false); | 935 a.SetValue(*it, "TEST", false); |