Mercurial > hg > orthanc
comparison UnitTestsSources/DicomMapTests.cpp @ 3197:24a76ed0d8a3
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 05 Feb 2019 21:10:47 +0100 |
parents | 763738c1f9f6 |
children | 7724ed267b5c |
comparison
equal
deleted
inserted
replaced
3196:763738c1f9f6 | 3197:24a76ed0d8a3 |
---|---|
553 } | 553 } |
554 | 554 |
555 | 555 |
556 | 556 |
557 | 557 |
558 #if 0 | 558 #if 1 |
559 | 559 |
560 #include <boost/math/special_functions/round.hpp> | 560 #include <boost/math/special_functions/round.hpp> |
561 | 561 |
562 | 562 |
563 static const char* const KEY_ALPHABETIC = "Alphabetic"; | 563 static const char* const KEY_ALPHABETIC = "Alphabetic"; |
813 virtual Action VisitString(std::string& newValue, | 813 virtual Action VisitString(std::string& newValue, |
814 const std::vector<DicomTag>& parentTags, | 814 const std::vector<DicomTag>& parentTags, |
815 const std::vector<size_t>& parentIndexes, | 815 const std::vector<size_t>& parentIndexes, |
816 const DicomTag& tag, | 816 const DicomTag& tag, |
817 ValueRepresentation vr, | 817 ValueRepresentation vr, |
818 const std::string& value) ORTHANC_OVERRIDE | 818 const std::string& tutu) ORTHANC_OVERRIDE |
819 { | 819 { |
820 if (tag.GetElement() != 0x0000 && | 820 if (vr == ValueRepresentation_OtherByte || |
821 vr != ValueRepresentation_NotSupported) | 821 vr == ValueRepresentation_OtherDouble || |
822 vr == ValueRepresentation_OtherFloat || | |
823 vr == ValueRepresentation_OtherLong || | |
824 vr == ValueRepresentation_OtherWord || | |
825 vr == ValueRepresentation_Unknown) | |
826 { | |
827 VisitBinary(parentTags, parentIndexes, tag, vr, tutu.c_str(), tutu.size()); | |
828 return Action_None; | |
829 } | |
830 else if (tag.GetElement() == 0x0000 || | |
831 vr == ValueRepresentation_NotSupported) | |
832 { | |
833 return Action_None; | |
834 } | |
835 else | |
822 { | 836 { |
823 Json::Value& node = CreateNode(parentTags, parentIndexes, tag); | 837 Json::Value& node = CreateNode(parentTags, parentIndexes, tag); |
824 node[KEY_VR] = EnumerationToString(vr); | 838 node[KEY_VR] = EnumerationToString(vr); |
825 | 839 |
826 if (!value.empty()) | 840 std::string truncated; |
841 | |
842 if (!tutu.empty() && | |
843 tutu[tutu.size() - 1] == '\0') | |
844 { | |
845 truncated = tutu.substr(0, tutu.size() - 1); | |
846 } | |
847 else | |
848 { | |
849 truncated = tutu; | |
850 } | |
851 | |
852 if (!truncated.empty()) | |
827 { | 853 { |
828 std::vector<std::string> tokens; | 854 std::vector<std::string> tokens; |
829 Toolbox::TokenizeString(tokens, value, '\\'); | 855 Toolbox::TokenizeString(tokens, truncated, '\\'); |
830 | 856 |
831 node[KEY_VALUE] = Json::arrayValue; | 857 node[KEY_VALUE] = Json::arrayValue; |
832 for (size_t i = 0; i < tokens.size(); i++) | 858 for (size_t i = 0; i < tokens.size(); i++) |
833 { | 859 { |
834 try | 860 try |
859 node[KEY_VALUE].append(FormatDouble(value)); | 885 node[KEY_VALUE].append(FormatDouble(value)); |
860 break; | 886 break; |
861 } | 887 } |
862 | 888 |
863 default: | 889 default: |
864 { | 890 if (tokens[i].empty()) |
865 size_t l = tokens[i].size(); | |
866 | |
867 if (l == 0) | |
868 { | 891 { |
869 node[KEY_VALUE].append(Json::nullValue); | 892 node[KEY_VALUE].append(Json::nullValue); |
870 } | 893 } |
871 else | 894 else |
872 { | 895 { |
873 if (tokens[i][l - 1] == '\0') | |
874 { | |
875 tokens[i] = tokens[i].substr(0, l - 1); | |
876 } | |
877 | |
878 node[KEY_VALUE].append(tokens[i]); | 896 node[KEY_VALUE].append(tokens[i]); |
879 } | 897 } |
880 | 898 |
881 break; | 899 break; |
882 } | |
883 } | 900 } |
884 } | 901 } |
885 catch (boost::bad_lexical_cast&) | 902 catch (boost::bad_lexical_cast&) |
886 { | 903 { |
887 throw OrthancException(ErrorCode_BadFileFormat); | 904 throw OrthancException(ErrorCode_BadFileFormat); |
912 import sys | 929 import sys |
913 j = json.loads(sys.stdin.read().decode("utf-8-sig")) | 930 j = json.loads(sys.stdin.read().decode("utf-8-sig")) |
914 print(json.dumps(j, indent=4, sort_keys=True, ensure_ascii=False).encode('utf-8')) | 931 print(json.dumps(j, indent=4, sort_keys=True, ensure_ascii=False).encode('utf-8')) |
915 EOF | 932 EOF |
916 | 933 |
917 DCMDICTPATH=/home/jodogne/Downloads/dcmtk-3.6.4/dcmdata/data/dicom.dic /home/jodogne/Downloads/dcmtk-3.6.4/i/bin/dcm2json ~/Subversion/orthanc-tests/Database/Issue22.dcm | tr -d '\0' | sed 's/\\u0000//g' | sed 's/\.0$//' | python /tmp/tutu.py > /tmp/a.json | 934 DCMDICTPATH=/home/jodogne/Downloads/dcmtk-3.6.4/dcmdata/data/dicom.dic /home/jodogne/Downloads/dcmtk-3.6.4/i/bin/dcm2json ~/Subversion/orthanc-tests/Database/Brainix/Epi/IM-0001-0018.dcm | tr -d '\0' | sed 's/\\u0000//g' | sed 's/\.0$//' | python /tmp/tutu.py > /tmp/a.json |
918 | 935 |
919 make -j4 && ./UnitTests --gtest_filter=DicomWeb* && python /tmp/tutu.py < /tmp/tutu.json > /tmp/b.json && diff -i /tmp/a.json /tmp/b.json | 936 make -j4 && ./UnitTests --gtest_filter=DicomWeb* && python /tmp/tutu.py < /tmp/tutu.json > /tmp/b.json && diff -i /tmp/a.json /tmp/b.json |
920 | 937 |
921 */ | 938 */ |
922 | 939 |
923 TEST(DicomWebJson, Basic) | 940 TEST(DicomWebJson, Basic) |
924 { | 941 { |
925 std::string content; | 942 std::string content; |
926 Orthanc::SystemToolbox::ReadFile(content, "/home/jodogne/Subversion/orthanc-tests/Database/Issue22.dcm"); | 943 Orthanc::SystemToolbox::ReadFile(content, "/home/jodogne/Subversion/orthanc-tests/Database/Brainix/Epi/IM-0001-0018.dcm"); |
927 | 944 |
928 Orthanc::ParsedDicomFile dicom(content); | 945 Orthanc::ParsedDicomFile dicom(content); |
929 | 946 |
930 Orthanc::DicomJsonVisitor visitor; | 947 Orthanc::DicomJsonVisitor visitor; |
931 dicom.Apply(visitor); | 948 dicom.Apply(visitor); |