Mercurial > hg > orthanc
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")); |