Mercurial > hg > orthanc
comparison UnitTestsSources/FromDcmtkTests.cpp @ 1695:18c02c6987d5
fix for encodings
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 08 Oct 2015 14:34:19 +0200 |
parents | 558b25228a23 |
children | 8ca0e89798b2 |
comparison
equal
deleted
inserted
replaced
1694:06d579e82bb8 | 1695:18c02c6987d5 |
---|---|
205 for (unsigned int i = 0; i < testEncodingsCount; i++) | 205 for (unsigned int i = 0; i < testEncodingsCount; i++) |
206 { | 206 { |
207 std::string source(testEncodingsEncoded[i]); | 207 std::string source(testEncodingsEncoded[i]); |
208 std::string expected(testEncodingsExpected[i]); | 208 std::string expected(testEncodingsExpected[i]); |
209 std::string s = Toolbox::ConvertToUtf8(source, testEncodings[i]); | 209 std::string s = Toolbox::ConvertToUtf8(source, testEncodings[i]); |
210 std::cout << EnumerationToString(testEncodings[i]) << std::endl; | 210 //std::cout << EnumerationToString(testEncodings[i]) << std::endl; |
211 EXPECT_EQ(expected, s); | 211 EXPECT_EQ(expected, s); |
212 } | 212 } |
213 } | 213 } |
214 | 214 |
215 | 215 |
260 | 260 |
261 TEST(FromDcmtkBridge, Encodings3) | 261 TEST(FromDcmtkBridge, Encodings3) |
262 { | 262 { |
263 for (unsigned int i = 0; i < testEncodingsCount; i++) | 263 for (unsigned int i = 0; i < testEncodingsCount; i++) |
264 { | 264 { |
265 std::cout << EnumerationToString(testEncodings[i]) << std::endl; | 265 //std::cout << EnumerationToString(testEncodings[i]) << std::endl; |
266 std::string dicom; | 266 std::string dicom; |
267 | 267 |
268 { | 268 { |
269 ParsedDicomFile f; | 269 ParsedDicomFile f; |
270 f.SetEncoding(testEncodings[i]); | 270 f.SetEncoding(testEncodings[i]); |
271 f.Insert(DICOM_TAG_PATIENT_NAME, testEncodingsEncoded[i]); | 271 |
272 std::string s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); | |
273 f.Insert(DICOM_TAG_PATIENT_NAME, s); | |
272 f.SaveToMemoryBuffer(dicom); | 274 f.SaveToMemoryBuffer(dicom); |
273 } | 275 } |
274 | 276 |
275 if (testEncodings[i] != Encoding_Windows1251) | 277 if (testEncodings[i] != Encoding_Windows1251) |
276 { | 278 { |
332 std::auto_ptr<DcmElement> element; | 334 std::auto_ptr<DcmElement> element; |
333 | 335 |
334 { | 336 { |
335 Json::Value a; | 337 Json::Value a; |
336 a = "Hello"; | 338 a = "Hello"; |
337 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false)); | 339 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false, Encoding_Utf8)); |
338 | 340 |
339 Json::Value b; | 341 Json::Value b; |
340 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 342 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); |
341 ASSERT_EQ("Hello", b["0010,0010"].asString()); | 343 ASSERT_EQ("Hello", b["0010,0010"].asString()); |
342 } | 344 } |
343 | 345 |
344 { | 346 { |
345 Json::Value a; | 347 Json::Value a; |
346 a = "Hello"; | 348 a = "Hello"; |
347 // Cannot assign a string to a sequence | 349 // Cannot assign a string to a sequence |
348 ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, false)), OrthancException); | 350 ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, false, Encoding_Utf8)), OrthancException); |
349 } | 351 } |
350 | 352 |
351 { | 353 { |
352 Json::Value a = Json::arrayValue; | 354 Json::Value a = Json::arrayValue; |
353 a.append("Hello"); | 355 a.append("Hello"); |
354 // Cannot assign an array to a string | 356 // Cannot assign an array to a string |
355 ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false)), OrthancException); | 357 ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false, Encoding_Utf8)), OrthancException); |
356 } | 358 } |
357 | 359 |
358 { | 360 { |
359 Json::Value a; | 361 Json::Value a; |
360 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 | 362 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 |
361 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, true)); | 363 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, true, Encoding_Utf8)); |
362 | 364 |
363 Json::Value b; | 365 Json::Value b; |
364 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 366 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); |
365 ASSERT_EQ("Hello", b["0010,0010"].asString()); | 367 ASSERT_EQ("Hello", b["0010,0010"].asString()); |
366 } | 368 } |
367 | 369 |
368 { | 370 { |
369 Json::Value a = Json::arrayValue; | 371 Json::Value a = Json::arrayValue; |
370 CreateSampleJson(a); | 372 CreateSampleJson(a); |
371 element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, true)); | 373 element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, true, Encoding_Utf8)); |
372 | 374 |
373 { | 375 { |
374 Json::Value b; | 376 Json::Value b; |
375 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 377 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); |
376 ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); | 378 ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); |
489 ASSERT_TRUE(f.GetTagValue(s, DICOM_TAG_SOP_CLASS_UID)); | 491 ASSERT_TRUE(f.GetTagValue(s, DICOM_TAG_SOP_CLASS_UID)); |
490 ASSERT_EQ(s, "Tata"); | 492 ASSERT_EQ(s, "Tata"); |
491 ASSERT_TRUE(f.GetTagValue(s, DICOM_TAG_MEDIA_STORAGE_SOP_CLASS_UID)); // Implicitly modified by (**) | 493 ASSERT_TRUE(f.GetTagValue(s, DICOM_TAG_MEDIA_STORAGE_SOP_CLASS_UID)); // Implicitly modified by (**) |
492 ASSERT_EQ(s, "Tata"); | 494 ASSERT_EQ(s, "Tata"); |
493 } | 495 } |
496 | |
497 | |
498 TEST(ParsedDicomFile, JsonEncoding) | |
499 { | |
500 ParsedDicomFile f; | |
501 | |
502 for (unsigned int i = 0; i < testEncodingsCount; i++) | |
503 { | |
504 if (testEncodings[i] != Encoding_Windows1251) | |
505 { | |
506 //std::cout << EnumerationToString(testEncodings[i]) << std::endl; | |
507 f.SetEncoding(testEncodings[i]); | |
508 | |
509 if (testEncodings[i] != Encoding_Ascii) | |
510 { | |
511 ASSERT_EQ(testEncodings[i], f.GetEncoding()); | |
512 } | |
513 | |
514 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); | |
515 f.Replace(DICOM_TAG_PATIENT_NAME, s, false); | |
516 | |
517 Json::Value v; | |
518 f.ToJson(v, DicomToJsonFormat_Simple, 0); | |
519 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i])); | |
520 } | |
521 } | |
522 } |