comparison UnitTestsSources/FromDcmtkTests.cpp @ 2128:9329ba17a069

Possibility to DELETE "dicom-as-json" attachments to reconstruct them
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 07 Nov 2016 15:13:16 +0100
parents 03b065778fc3
children aa4b8895cd23
comparison
equal deleted inserted replaced
2127:bfa92c9328d7 2128:9329ba17a069
524 f.Replace(REFERENCED_PATIENT_SEQUENCE, a, false, DicomReplaceMode_InsertIfAbsent); 524 f.Replace(REFERENCED_PATIENT_SEQUENCE, a, false, DicomReplaceMode_InsertIfAbsent);
525 ASSERT_TRUE(f.HasTag(REFERENCED_PATIENT_SEQUENCE)); 525 ASSERT_TRUE(f.HasTag(REFERENCED_PATIENT_SEQUENCE));
526 526
527 { 527 {
528 Json::Value b; 528 Json::Value b;
529 f.ToJson(b, DicomToJsonFormat_Full, DicomToJsonFlags_Default, 0); 529 f.DatasetToJson(b, DicomToJsonFormat_Full, DicomToJsonFlags_Default, 0);
530 530
531 Json::Value c; 531 Json::Value c;
532 ServerToolbox::SimplifyTags(c, b, DicomToJsonFormat_Human); 532 ServerToolbox::SimplifyTags(c, b, DicomToJsonFormat_Human);
533 533
534 ASSERT_EQ(0, c["ReferencedPatientSequence"].compare(a)); 534 ASSERT_EQ(0, c["ReferencedPatientSequence"].compare(a));
569 569
570 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); 570 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]);
571 f.Replace(DICOM_TAG_PATIENT_NAME, s, false, DicomReplaceMode_InsertIfAbsent); 571 f.Replace(DICOM_TAG_PATIENT_NAME, s, false, DicomReplaceMode_InsertIfAbsent);
572 572
573 Json::Value v; 573 Json::Value v;
574 f.ToJson(v, DicomToJsonFormat_Human, DicomToJsonFlags_Default, 0); 574 f.DatasetToJson(v, DicomToJsonFormat_Human, DicomToJsonFlags_Default, 0);
575 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i])); 575 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i]));
576 } 576 }
577 } 577 }
578 } 578 }
579 579
587 f.Insert(DicomTag(0x7050, 0x1000), "Some public tag", false); // Even group => public tag 587 f.Insert(DicomTag(0x7050, 0x1000), "Some public tag", false); // Even group => public tag
588 f.Insert(DicomTag(0x7052, 0x1000), "Some unknown tag", false); // Even group => public, unknown tag 588 f.Insert(DicomTag(0x7052, 0x1000), "Some unknown tag", false); // Even group => public, unknown tag
589 f.Insert(DicomTag(0x7053, 0x1000), "Some private tag", false); // Odd group => private tag 589 f.Insert(DicomTag(0x7053, 0x1000), "Some private tag", false); // Odd group => private tag
590 590
591 Json::Value v; 591 Json::Value v;
592 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); 592 f.DatasetToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0);
593 ASSERT_EQ(Json::objectValue, v.type()); 593 ASSERT_EQ(Json::objectValue, v.type());
594 ASSERT_EQ(6u, v.getMemberNames().size()); 594 ASSERT_EQ(6u, v.getMemberNames().size());
595 ASSERT_FALSE(v.isMember("7052,1000")); 595 ASSERT_FALSE(v.isMember("7052,1000"));
596 ASSERT_FALSE(v.isMember("7053,1000")); 596 ASSERT_FALSE(v.isMember("7053,1000"));
597 ASSERT_TRUE(v.isMember("7050,1000")); 597 ASSERT_TRUE(v.isMember("7050,1000"));
598 ASSERT_EQ(Json::stringValue, v["7050,1000"].type()); 598 ASSERT_EQ(Json::stringValue, v["7050,1000"].type());
599 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 599 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
600 600
601 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePrivateTags | DicomToJsonFlags_ConvertBinaryToNull), 0); 601 f.DatasetToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePrivateTags | DicomToJsonFlags_ConvertBinaryToNull), 0);
602 ASSERT_EQ(Json::objectValue, v.type()); 602 ASSERT_EQ(Json::objectValue, v.type());
603 ASSERT_EQ(7u, v.getMemberNames().size()); 603 ASSERT_EQ(7u, v.getMemberNames().size());
604 ASSERT_FALSE(v.isMember("7052,1000")); 604 ASSERT_FALSE(v.isMember("7052,1000"));
605 ASSERT_TRUE(v.isMember("7050,1000")); 605 ASSERT_TRUE(v.isMember("7050,1000"));
606 ASSERT_TRUE(v.isMember("7053,1000")); 606 ASSERT_TRUE(v.isMember("7053,1000"));
607 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 607 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
608 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); 608 ASSERT_EQ(Json::nullValue, v["7053,1000"].type());
609 609
610 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0); 610 f.DatasetToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0);
611 ASSERT_EQ(Json::objectValue, v.type()); 611 ASSERT_EQ(Json::objectValue, v.type());
612 ASSERT_EQ(7u, v.getMemberNames().size()); 612 ASSERT_EQ(7u, v.getMemberNames().size());
613 ASSERT_FALSE(v.isMember("7052,1000")); 613 ASSERT_FALSE(v.isMember("7052,1000"));
614 ASSERT_TRUE(v.isMember("7050,1000")); 614 ASSERT_TRUE(v.isMember("7050,1000"));
615 ASSERT_TRUE(v.isMember("7053,1000")); 615 ASSERT_TRUE(v.isMember("7053,1000"));
618 ASSERT_EQ(Json::stringValue, v["7053,1000"].type()); 618 ASSERT_EQ(Json::stringValue, v["7053,1000"].type());
619 ASSERT_TRUE(Toolbox::DecodeDataUriScheme(mime, content, v["7053,1000"].asString())); 619 ASSERT_TRUE(Toolbox::DecodeDataUriScheme(mime, content, v["7053,1000"].asString()));
620 ASSERT_EQ("application/octet-stream", mime); 620 ASSERT_EQ("application/octet-stream", mime);
621 ASSERT_EQ("Some private tag", content); 621 ASSERT_EQ("Some private tag", content);
622 622
623 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_ConvertBinaryToNull), 0); 623 f.DatasetToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_ConvertBinaryToNull), 0);
624 ASSERT_EQ(Json::objectValue, v.type()); 624 ASSERT_EQ(Json::objectValue, v.type());
625 ASSERT_EQ(7u, v.getMemberNames().size()); 625 ASSERT_EQ(7u, v.getMemberNames().size());
626 ASSERT_TRUE(v.isMember("7050,1000")); 626 ASSERT_TRUE(v.isMember("7050,1000"));
627 ASSERT_TRUE(v.isMember("7052,1000")); 627 ASSERT_TRUE(v.isMember("7052,1000"));
628 ASSERT_FALSE(v.isMember("7053,1000")); 628 ASSERT_FALSE(v.isMember("7053,1000"));
629 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 629 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
630 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); 630 ASSERT_EQ(Json::nullValue, v["7052,1000"].type());
631 631
632 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags), 0); 632 f.DatasetToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags), 0);
633 ASSERT_EQ(Json::objectValue, v.type()); 633 ASSERT_EQ(Json::objectValue, v.type());
634 ASSERT_EQ(7u, v.getMemberNames().size()); 634 ASSERT_EQ(7u, v.getMemberNames().size());
635 ASSERT_TRUE(v.isMember("7050,1000")); 635 ASSERT_TRUE(v.isMember("7050,1000"));
636 ASSERT_TRUE(v.isMember("7052,1000")); 636 ASSERT_TRUE(v.isMember("7052,1000"));
637 ASSERT_FALSE(v.isMember("7053,1000")); 637 ASSERT_FALSE(v.isMember("7053,1000"));
639 ASSERT_EQ(Json::stringValue, v["7052,1000"].type()); 639 ASSERT_EQ(Json::stringValue, v["7052,1000"].type());
640 ASSERT_TRUE(Toolbox::DecodeDataUriScheme(mime, content, v["7052,1000"].asString())); 640 ASSERT_TRUE(Toolbox::DecodeDataUriScheme(mime, content, v["7052,1000"].asString()));
641 ASSERT_EQ("application/octet-stream", mime); 641 ASSERT_EQ("application/octet-stream", mime);
642 ASSERT_EQ("Some unknown tag", content); 642 ASSERT_EQ("Some unknown tag", content);
643 643
644 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_IncludePrivateTags | DicomToJsonFlags_ConvertBinaryToNull), 0); 644 f.DatasetToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_IncludePrivateTags | DicomToJsonFlags_ConvertBinaryToNull), 0);
645 ASSERT_EQ(Json::objectValue, v.type()); 645 ASSERT_EQ(Json::objectValue, v.type());
646 ASSERT_EQ(8u, v.getMemberNames().size()); 646 ASSERT_EQ(8u, v.getMemberNames().size());
647 ASSERT_TRUE(v.isMember("7050,1000")); 647 ASSERT_TRUE(v.isMember("7050,1000"));
648 ASSERT_TRUE(v.isMember("7052,1000")); 648 ASSERT_TRUE(v.isMember("7052,1000"));
649 ASSERT_TRUE(v.isMember("7053,1000")); 649 ASSERT_TRUE(v.isMember("7053,1000"));
657 { 657 {
658 ParsedDicomFile f(true); 658 ParsedDicomFile f(true);
659 f.Insert(DICOM_TAG_PIXEL_DATA, "Pixels", false); 659 f.Insert(DICOM_TAG_PIXEL_DATA, "Pixels", false);
660 660
661 Json::Value v; 661 Json::Value v;
662 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); 662 f.DatasetToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0);
663 ASSERT_EQ(Json::objectValue, v.type()); 663 ASSERT_EQ(Json::objectValue, v.type());
664 ASSERT_EQ(5u, v.getMemberNames().size()); 664 ASSERT_EQ(5u, v.getMemberNames().size());
665 ASSERT_FALSE(v.isMember("7fe0,0010")); 665 ASSERT_FALSE(v.isMember("7fe0,0010"));
666 666
667 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToNull), 0); 667 f.DatasetToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToNull), 0);
668 ASSERT_EQ(Json::objectValue, v.type()); 668 ASSERT_EQ(Json::objectValue, v.type());
669 ASSERT_EQ(6u, v.getMemberNames().size()); 669 ASSERT_EQ(6u, v.getMemberNames().size());
670 ASSERT_TRUE(v.isMember("7fe0,0010")); 670 ASSERT_TRUE(v.isMember("7fe0,0010"));
671 ASSERT_EQ(Json::nullValue, v["7fe0,0010"].type()); 671 ASSERT_EQ(Json::nullValue, v["7fe0,0010"].type());
672 672
673 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToAscii), 0); 673 f.DatasetToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToAscii), 0);
674 ASSERT_EQ(Json::objectValue, v.type()); 674 ASSERT_EQ(Json::objectValue, v.type());
675 ASSERT_EQ(6u, v.getMemberNames().size()); 675 ASSERT_EQ(6u, v.getMemberNames().size());
676 ASSERT_TRUE(v.isMember("7fe0,0010")); 676 ASSERT_TRUE(v.isMember("7fe0,0010"));
677 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type()); 677 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type());
678 ASSERT_EQ("Pixels", v["7fe0,0010"].asString()); 678 ASSERT_EQ("Pixels", v["7fe0,0010"].asString());
679 679
680 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePixelData, 0); 680 f.DatasetToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePixelData, 0);
681 ASSERT_EQ(Json::objectValue, v.type()); 681 ASSERT_EQ(Json::objectValue, v.type());
682 ASSERT_EQ(6u, v.getMemberNames().size()); 682 ASSERT_EQ(6u, v.getMemberNames().size());
683 ASSERT_TRUE(v.isMember("7fe0,0010")); 683 ASSERT_TRUE(v.isMember("7fe0,0010"));
684 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type()); 684 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type());
685 std::string mime, content; 685 std::string mime, content;
766 { 766 {
767 std::auto_ptr<ParsedDicomFile> dicom 767 std::auto_ptr<ParsedDicomFile> dicom
768 (ParsedDicomFile::CreateFromJson(v, static_cast<DicomFromJsonFlags>(DicomFromJsonFlags_GenerateIdentifiers))); 768 (ParsedDicomFile::CreateFromJson(v, static_cast<DicomFromJsonFlags>(DicomFromJsonFlags_GenerateIdentifiers)));
769 769
770 Json::Value vv; 770 Json::Value vv;
771 dicom->ToJson(vv, DicomToJsonFormat_Human, toJsonFlags, 0); 771 dicom->DatasetToJson(vv, DicomToJsonFormat_Human, toJsonFlags, 0);
772 772
773 ASSERT_EQ(vv["SOPClassUID"].asString(), sopClassUid); 773 ASSERT_EQ(vv["SOPClassUID"].asString(), sopClassUid);
774 ASSERT_EQ(vv["MediaStorageSOPClassUID"].asString(), sopClassUid); 774 ASSERT_EQ(vv["MediaStorageSOPClassUID"].asString(), sopClassUid);
775 ASSERT_TRUE(vv.isMember("SOPInstanceUID")); 775 ASSERT_TRUE(vv.isMember("SOPInstanceUID"));
776 ASSERT_TRUE(vv.isMember("SeriesInstanceUID")); 776 ASSERT_TRUE(vv.isMember("SeriesInstanceUID"));
782 { 782 {
783 std::auto_ptr<ParsedDicomFile> dicom 783 std::auto_ptr<ParsedDicomFile> dicom
784 (ParsedDicomFile::CreateFromJson(v, static_cast<DicomFromJsonFlags>(DicomFromJsonFlags_GenerateIdentifiers))); 784 (ParsedDicomFile::CreateFromJson(v, static_cast<DicomFromJsonFlags>(DicomFromJsonFlags_GenerateIdentifiers)));
785 785
786 Json::Value vv; 786 Json::Value vv;
787 dicom->ToJson(vv, DicomToJsonFormat_Human, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData), 0); 787 dicom->DatasetToJson(vv, DicomToJsonFormat_Human, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData), 0);
788 788
789 std::string mime, content; 789 std::string mime, content;
790 ASSERT_TRUE(Toolbox::DecodeDataUriScheme(mime, content, vv["PixelData"].asString())); 790 ASSERT_TRUE(Toolbox::DecodeDataUriScheme(mime, content, vv["PixelData"].asString()));
791 ASSERT_EQ("application/octet-stream", mime); 791 ASSERT_EQ("application/octet-stream", mime);
792 ASSERT_EQ(5u * 5u * 3u /* the red dot is 5x5 pixels in RGB24 */ + 1 /* for padding */, content.size()); 792 ASSERT_EQ(5u * 5u * 3u /* the red dot is 5x5 pixels in RGB24 */ + 1 /* for padding */, content.size());
796 { 796 {
797 std::auto_ptr<ParsedDicomFile> dicom 797 std::auto_ptr<ParsedDicomFile> dicom
798 (ParsedDicomFile::CreateFromJson(v, static_cast<DicomFromJsonFlags>(DicomFromJsonFlags_DecodeDataUriScheme))); 798 (ParsedDicomFile::CreateFromJson(v, static_cast<DicomFromJsonFlags>(DicomFromJsonFlags_DecodeDataUriScheme)));
799 799
800 Json::Value vv; 800 Json::Value vv;
801 dicom->ToJson(vv, DicomToJsonFormat_Short, toJsonFlags, 0); 801 dicom->DatasetToJson(vv, DicomToJsonFormat_Short, toJsonFlags, 0);
802 802
803 ASSERT_FALSE(vv.isMember("SOPInstanceUID")); 803 ASSERT_FALSE(vv.isMember("SOPInstanceUID"));
804 ASSERT_FALSE(vv.isMember("SeriesInstanceUID")); 804 ASSERT_FALSE(vv.isMember("SeriesInstanceUID"));
805 ASSERT_FALSE(vv.isMember("StudyInstanceUID")); 805 ASSERT_FALSE(vv.isMember("StudyInstanceUID"));
806 ASSERT_FALSE(vv.isMember("PatientID")); 806 ASSERT_FALSE(vv.isMember("PatientID"));