Mercurial > hg > orthanc
comparison UnitTestsSources/FromDcmtkTests.cpp @ 2207:6dc3bdb4088b
Fix handling of encodings in C-FIND for worklists
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 09 Dec 2016 11:24:04 +0100 |
parents | 9b373b7d6713 |
children | e3fd5bc429a2 |
comparison
equal
deleted
inserted
replaced
2206:27106f7e3759 | 2207:6dc3bdb4088b |
---|---|
1167 ASSERT_EQ(v2["SpecificCharacterSet"].asString(), v["SpecificCharacterSet"].asString()); | 1167 ASSERT_EQ(v2["SpecificCharacterSet"].asString(), v["SpecificCharacterSet"].asString()); |
1168 } | 1168 } |
1169 } | 1169 } |
1170 } | 1170 } |
1171 } | 1171 } |
1172 | |
1173 | |
1174 TEST(ParsedDicomFile, ChangeEncoding) | |
1175 { | |
1176 for (unsigned int i = 0; i < testEncodingsCount; i++) | |
1177 { | |
1178 // 1251 codepage is not supported by the core DICOM standard, ignore it | |
1179 if (testEncodings[i] != Encoding_Windows1251) | |
1180 { | |
1181 DicomMap m; | |
1182 m.SetValue(DICOM_TAG_PATIENT_NAME, testEncodingsExpected[i], false); | |
1183 | |
1184 std::string tag; | |
1185 | |
1186 ParsedDicomFile dicom(m, Encoding_Utf8); | |
1187 ASSERT_EQ(Encoding_Utf8, dicom.GetEncoding()); | |
1188 ASSERT_TRUE(dicom.GetTagValue(tag, DICOM_TAG_PATIENT_NAME)); | |
1189 ASSERT_EQ(tag, testEncodingsExpected[i]); | |
1190 | |
1191 { | |
1192 Json::Value v; | |
1193 dicom.DatasetToJson(v, DicomToJsonFormat_Human, DicomToJsonFlags_Default, 0); | |
1194 ASSERT_STREQ(v["SpecificCharacterSet"].asCString(), "ISO_IR 192"); | |
1195 ASSERT_STREQ(v["PatientName"].asCString(), testEncodingsExpected[i]); | |
1196 } | |
1197 | |
1198 dicom.ChangeEncoding(testEncodings[i]); | |
1199 | |
1200 ASSERT_EQ(testEncodings[i], dicom.GetEncoding()); | |
1201 | |
1202 const char* c = NULL; | |
1203 ASSERT_TRUE(dicom.GetDcmtkObject().getDataset()->findAndGetString(DCM_PatientName, c).good()); | |
1204 EXPECT_STREQ(c, testEncodingsEncoded[i]); | |
1205 | |
1206 ASSERT_TRUE(dicom.GetTagValue(tag, DICOM_TAG_PATIENT_NAME)); // Decodes to UTF-8 | |
1207 EXPECT_EQ(tag, testEncodingsExpected[i]); | |
1208 | |
1209 { | |
1210 Json::Value v; | |
1211 dicom.DatasetToJson(v, DicomToJsonFormat_Human, DicomToJsonFlags_Default, 0); | |
1212 ASSERT_STREQ(v["SpecificCharacterSet"].asCString(), GetDicomSpecificCharacterSet(testEncodings[i])); | |
1213 ASSERT_STREQ(v["PatientName"].asCString(), testEncodingsExpected[i]); | |
1214 } | |
1215 } | |
1216 } | |
1217 } |