Mercurial > hg > orthanc
comparison UnitTestsSources/FromDcmtkTests.cpp @ 1744:b3de74dec2d5 db-changes
integration mainline->db-changes
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 26 Oct 2015 12:30:34 +0100 |
parents | df331354cea2 |
children | 1b1d5470233f |
comparison
equal
deleted
inserted
replaced
1729:54d78925cbb6 | 1744:b3de74dec2d5 |
---|---|
337 Json::Value a; | 337 Json::Value a; |
338 a = "Hello"; | 338 a = "Hello"; |
339 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false, Encoding_Utf8)); | 339 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false, Encoding_Utf8)); |
340 | 340 |
341 Json::Value b; | 341 Json::Value b; |
342 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 342 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
343 ASSERT_EQ("Hello", b["0010,0010"].asString()); | 343 ASSERT_EQ("Hello", b["0010,0010"].asString()); |
344 } | 344 } |
345 | 345 |
346 { | 346 { |
347 Json::Value a; | 347 Json::Value a; |
361 Json::Value a; | 361 Json::Value a; |
362 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 | 362 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 |
363 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, true, Encoding_Utf8)); | 363 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, true, Encoding_Utf8)); |
364 | 364 |
365 Json::Value b; | 365 Json::Value b; |
366 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 366 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
367 ASSERT_EQ("Hello", b["0010,0010"].asString()); | 367 ASSERT_EQ("Hello", b["0010,0010"].asString()); |
368 } | 368 } |
369 | 369 |
370 { | 370 { |
371 Json::Value a = Json::arrayValue; | 371 Json::Value a = Json::arrayValue; |
372 CreateSampleJson(a); | 372 CreateSampleJson(a); |
373 element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, true, Encoding_Utf8)); | 373 element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, true, Encoding_Utf8)); |
374 | 374 |
375 { | 375 { |
376 Json::Value b; | 376 Json::Value b; |
377 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 377 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
378 ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); | 378 ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); |
379 ASSERT_EQ(2, b["0008,1110"].size()); | 379 ASSERT_EQ(2, b["0008,1110"].size()); |
380 | 380 |
381 Json::Value::ArrayIndex i = (b["0008,1110"][0]["0010,0010"].asString() == "Hello") ? 0 : 1; | 381 Json::Value::ArrayIndex i = (b["0008,1110"][0]["0010,0010"].asString() == "Hello") ? 0 : 1; |
382 | 382 |
389 ASSERT_EQ(b["0008,1110"][1 - i]["0010,0020"].asString(), "World2"); | 389 ASSERT_EQ(b["0008,1110"][1 - i]["0010,0020"].asString(), "World2"); |
390 } | 390 } |
391 | 391 |
392 { | 392 { |
393 Json::Value b; | 393 Json::Value b; |
394 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Full, 0, Encoding_Ascii); | 394 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Full, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
395 | 395 |
396 Json::Value c; | 396 Json::Value c; |
397 Toolbox::SimplifyTags(c, b); | 397 Toolbox::SimplifyTags(c, b); |
398 | 398 |
399 a[1]["PatientName"] = "Hello2"; // To remove the Data URI Scheme encoding | 399 a[1]["PatientName"] = "Hello2"; // To remove the Data URI Scheme encoding |
468 f.Replace(REFERENCED_PATIENT_SEQUENCE, a, false, DicomReplaceMode_InsertIfAbsent); | 468 f.Replace(REFERENCED_PATIENT_SEQUENCE, a, false, DicomReplaceMode_InsertIfAbsent); |
469 ASSERT_TRUE(f.HasTag(REFERENCED_PATIENT_SEQUENCE)); | 469 ASSERT_TRUE(f.HasTag(REFERENCED_PATIENT_SEQUENCE)); |
470 | 470 |
471 { | 471 { |
472 Json::Value b; | 472 Json::Value b; |
473 f.ToJson(b, DicomToJsonFormat_Full, 0); | 473 f.ToJson(b, DicomToJsonFormat_Full, DicomToJsonFlags_Default, 0); |
474 | 474 |
475 Json::Value c; | 475 Json::Value c; |
476 Toolbox::SimplifyTags(c, b); | 476 Toolbox::SimplifyTags(c, b); |
477 | 477 |
478 ASSERT_EQ(0, c["ReferencedPatientSequence"].compare(a)); | 478 ASSERT_EQ(0, c["ReferencedPatientSequence"].compare(a)); |
513 | 513 |
514 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); | 514 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); |
515 f.Replace(DICOM_TAG_PATIENT_NAME, s, false); | 515 f.Replace(DICOM_TAG_PATIENT_NAME, s, false); |
516 | 516 |
517 Json::Value v; | 517 Json::Value v; |
518 f.ToJson(v, DicomToJsonFormat_Simple, 0); | 518 f.ToJson(v, DicomToJsonFormat_Simple, DicomToJsonFlags_Default, 0); |
519 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i])); | 519 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i])); |
520 } | 520 } |
521 } | 521 } |
522 } | 522 } |
523 | |
524 | |
525 TEST(ParsedDicomFile, ToJsonFlags1) | |
526 { | |
527 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7053, 0x1000), EVR_PN, "MyPrivateTag", 1, 1); | |
528 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7050, 0x1000), EVR_PN, "Declared public tag", 1, 1); | |
529 | |
530 ParsedDicomFile f; | |
531 f.Insert(DicomTag(0x7050, 0x1000), "Some public tag", false); // Even group => public tag | |
532 f.Insert(DicomTag(0x7052, 0x1000), "Some unknown tag", false); // Even group => public, unknown tag | |
533 f.Insert(DicomTag(0x7053, 0x1000), "Some private tag", false); // Odd group => private tag | |
534 | |
535 Json::Value v; | |
536 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
537 ASSERT_EQ(Json::objectValue, v.type()); | |
538 ASSERT_EQ(6, v.getMemberNames().size()); | |
539 ASSERT_FALSE(v.isMember("7052,1000")); | |
540 ASSERT_FALSE(v.isMember("7053,1000")); | |
541 ASSERT_TRUE(v.isMember("7050,1000")); | |
542 ASSERT_EQ(Json::stringValue, v["7050,1000"].type()); | |
543 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); | |
544 | |
545 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0); | |
546 ASSERT_EQ(Json::objectValue, v.type()); | |
547 ASSERT_EQ(7, v.getMemberNames().size()); | |
548 ASSERT_FALSE(v.isMember("7052,1000")); | |
549 ASSERT_TRUE(v.isMember("7050,1000")); | |
550 ASSERT_TRUE(v.isMember("7053,1000")); | |
551 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); | |
552 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING | |
553 | |
554 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludeUnknownTags, 0); | |
555 ASSERT_EQ(Json::objectValue, v.type()); | |
556 ASSERT_EQ(7, v.getMemberNames().size()); | |
557 ASSERT_TRUE(v.isMember("7050,1000")); | |
558 ASSERT_TRUE(v.isMember("7052,1000")); | |
559 ASSERT_FALSE(v.isMember("7053,1000")); | |
560 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); | |
561 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING | |
562 | |
563 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_IncludePrivateTags), 0); | |
564 ASSERT_EQ(Json::objectValue, v.type()); | |
565 ASSERT_EQ(8, v.getMemberNames().size()); | |
566 ASSERT_TRUE(v.isMember("7050,1000")); | |
567 ASSERT_TRUE(v.isMember("7052,1000")); | |
568 ASSERT_TRUE(v.isMember("7053,1000")); | |
569 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); | |
570 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING | |
571 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING | |
572 } | |
573 | |
574 | |
575 TEST(ParsedDicomFile, ToJsonFlags2) | |
576 { | |
577 ParsedDicomFile f; | |
578 f.Insert(DICOM_TAG_PIXEL_DATA, "Pixels", false); | |
579 | |
580 Json::Value v; | |
581 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
582 ASSERT_EQ(Json::objectValue, v.type()); | |
583 ASSERT_EQ(5, v.getMemberNames().size()); | |
584 ASSERT_FALSE(v.isMember("7fe0,0010")); | |
585 | |
586 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToNull), 0); | |
587 ASSERT_EQ(Json::objectValue, v.type()); | |
588 ASSERT_EQ(6, v.getMemberNames().size()); | |
589 ASSERT_TRUE(v.isMember("7fe0,0010")); | |
590 ASSERT_EQ(Json::nullValue, v["7fe0,0010"].type()); | |
591 | |
592 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToAscii), 0); | |
593 ASSERT_EQ(Json::objectValue, v.type()); | |
594 ASSERT_EQ(6, v.getMemberNames().size()); | |
595 ASSERT_TRUE(v.isMember("7fe0,0010")); | |
596 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type()); | |
597 ASSERT_EQ("Pixels", v["7fe0,0010"].asString()); | |
598 | |
599 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePixelData, 0); | |
600 ASSERT_EQ(Json::objectValue, v.type()); | |
601 ASSERT_EQ(6, v.getMemberNames().size()); | |
602 ASSERT_TRUE(v.isMember("7fe0,0010")); | |
603 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type()); | |
604 std::string mime, content; | |
605 Toolbox::DecodeDataUriScheme(mime, content, v["7fe0,0010"].asString()); | |
606 ASSERT_EQ("application/octet-stream", mime); | |
607 ASSERT_EQ("Pixels", content); | |
608 } |