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 }