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);