comparison UnitTestsSources/DicomMapTests.cpp @ 3199:9316f341e40f

unit testing json for dicomweb
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 06 Feb 2019 10:37:03 +0100
parents 7724ed267b5c
children 1f4a2c58e7fa
comparison
equal deleted inserted replaced
3198:7724ed267b5c 3199:9316f341e40f
553 } 553 }
554 554
555 555
556 556
557 557
558 #if 1
559 558
560 #include <boost/math/special_functions/round.hpp> 559 #include <boost/math/special_functions/round.hpp>
561 560
562 561
563 static const char* const KEY_ALPHABETIC = "Alphabetic"; 562 static const char* const KEY_ALPHABETIC = "Alphabetic";
1034 dicom.ReplacePlainString(DicomTag(0x0010, 0x9431), "43"); // FL 1033 dicom.ReplacePlainString(DicomTag(0x0010, 0x9431), "43"); // FL
1035 dicom.ReplacePlainString(DicomTag(0x0008, 0x1163), "44"); // FD 1034 dicom.ReplacePlainString(DicomTag(0x0008, 0x1163), "44"); // FD
1036 dicom.ReplacePlainString(DicomTag(0x0008, 0x1160), "45"); // IS 1035 dicom.ReplacePlainString(DicomTag(0x0008, 0x1160), "45"); // IS
1037 dicom.ReplacePlainString(DicomTag(0x0008, 0x0070), "LO"); 1036 dicom.ReplacePlainString(DicomTag(0x0008, 0x0070), "LO");
1038 dicom.ReplacePlainString(DicomTag(0x0008, 0x0108), "LT"); 1037 dicom.ReplacePlainString(DicomTag(0x0008, 0x0108), "LT");
1039 1038 dicom.ReplacePlainString(DicomTag(0x0028, 0x2000), "OB");
1039 dicom.ReplacePlainString(DicomTag(0x7fe0, 0x0009), "OD");
1040 dicom.ReplacePlainString(DicomTag(0x0064, 0x0009), "OF");
1041
1042 #if DCMTK_VERSION_NUMBER >= 362
1043 dicom.ReplacePlainString(DicomTag(0x0066, 0x0040), "OLOL");
1044 #endif
1045
1046 ASSERT_THROW(dicom.ReplacePlainString(DicomTag(0x0028, 0x1201), "O"), OrthancException);
1047 dicom.ReplacePlainString(DicomTag(0x0028, 0x1201), "OWOW");
1048 dicom.ReplacePlainString(DicomTag(0x0010, 0x0010), "PN");
1049 dicom.ReplacePlainString(DicomTag(0x0008, 0x0050), "SH");
1050 dicom.ReplacePlainString(DicomTag(0x0018, 0x6020), "-15"); // SL
1051 dicom.ReplacePlainString(DicomTag(0x0018, 0x9219), "-16"); // SS
1052 dicom.ReplacePlainString(DicomTag(0x0008, 0x0081), "ST");
1053 dicom.ReplacePlainString(DicomTag(0x0008, 0x0013), "TM");
1054 dicom.ReplacePlainString(DicomTag(0x0008, 0x0119), "UC");
1055 dicom.ReplacePlainString(DicomTag(0x0008, 0x0016), "UI");
1056 dicom.ReplacePlainString(DicomTag(0x0008, 0x1161), "128"); // UL
1057 dicom.ReplacePlainString(DicomTag(0x4342, 0x1234), "UN"); // Inexistent tag
1058 dicom.ReplacePlainString(DicomTag(0x0008, 0x0120), "UR");
1059 dicom.ReplacePlainString(DicomTag(0x0008, 0x0301), "17"); // US
1060 dicom.ReplacePlainString(DicomTag(0x0040, 0x0031), "UT");
1061
1062
1040 Orthanc::DicomJsonVisitor visitor; 1063 Orthanc::DicomJsonVisitor visitor;
1041 dicom.Apply(visitor); 1064 dicom.Apply(visitor);
1042 1065
1043 std::cout << visitor.GetResult(); 1066 std::string s;
1067
1044 ASSERT_EQ("AE", visitor.GetResult() ["00400241"]["vr"].asString()); 1068 ASSERT_EQ("AE", visitor.GetResult() ["00400241"]["vr"].asString());
1045 ASSERT_EQ("AE", visitor.GetResult() ["00400241"]["Value"][0].asString()); 1069 ASSERT_EQ("AE", visitor.GetResult() ["00400241"]["Value"][0].asString());
1046 ASSERT_EQ("AS", visitor.GetResult() ["00101010"]["vr"].asString()); 1070 ASSERT_EQ("AS", visitor.GetResult() ["00101010"]["vr"].asString());
1047 ASSERT_EQ("AS", visitor.GetResult() ["00101010"]["Value"][0].asString()); 1071 ASSERT_EQ("AS", visitor.GetResult() ["00101010"]["Value"][0].asString());
1048 ASSERT_EQ("AT", visitor.GetResult() ["00209165"]["vr"].asString()); 1072 ASSERT_EQ("AT", visitor.GetResult() ["00209165"]["vr"].asString());
1063 ASSERT_FLOAT_EQ(45.0f, visitor.GetResult() ["00081160"]["Value"][0].asFloat()); 1087 ASSERT_FLOAT_EQ(45.0f, visitor.GetResult() ["00081160"]["Value"][0].asFloat());
1064 ASSERT_EQ("LO", visitor.GetResult() ["00080070"]["vr"].asString()); 1088 ASSERT_EQ("LO", visitor.GetResult() ["00080070"]["vr"].asString());
1065 ASSERT_EQ("LO", visitor.GetResult() ["00080070"]["Value"][0].asString()); 1089 ASSERT_EQ("LO", visitor.GetResult() ["00080070"]["Value"][0].asString());
1066 ASSERT_EQ("LT", visitor.GetResult() ["00080108"]["vr"].asString()); 1090 ASSERT_EQ("LT", visitor.GetResult() ["00080108"]["vr"].asString());
1067 ASSERT_EQ("LT", visitor.GetResult() ["00080108"]["Value"][0].asString()); 1091 ASSERT_EQ("LT", visitor.GetResult() ["00080108"]["Value"][0].asString());
1068 } 1092
1069 1093 ASSERT_EQ("OB", visitor.GetResult() ["00282000"]["vr"].asString());
1070 1094 Toolbox::DecodeBase64(s, visitor.GetResult() ["00282000"]["InlineBinary"].asString());
1095 ASSERT_EQ("OB", s);
1096
1097 ASSERT_EQ("OD", visitor.GetResult() ["7FE00009"]["vr"].asString());
1098 Toolbox::DecodeBase64(s, visitor.GetResult() ["7FE00009"]["InlineBinary"].asString());
1099 ASSERT_EQ("OD", s);
1100
1101 ASSERT_EQ("OF", visitor.GetResult() ["00640009"]["vr"].asString());
1102 Toolbox::DecodeBase64(s, visitor.GetResult() ["00640009"]["InlineBinary"].asString());
1103 ASSERT_EQ("OF", s);
1104
1105 #if DCMTK_VERSION_NUMBER >= 362
1106 ASSERT_EQ("OL", visitor.GetResult() ["00660040"]["vr"].asString());
1107 Toolbox::DecodeBase64(s, visitor.GetResult() ["00660040"]["InlineBinary"].asString());
1108 ASSERT_EQ("OLOL", s);
1071 #endif 1109 #endif
1110
1111 ASSERT_EQ("OW", visitor.GetResult() ["00281201"]["vr"].asString());
1112 Toolbox::DecodeBase64(s, visitor.GetResult() ["00281201"]["InlineBinary"].asString());
1113 ASSERT_EQ("OWOW", s);
1114
1115 ASSERT_EQ("PN", visitor.GetResult() ["00100010"]["vr"].asString());
1116 ASSERT_EQ("PN", visitor.GetResult() ["00100010"]["Value"][0]["Alphabetic"].asString());
1117
1118 ASSERT_EQ("SH", visitor.GetResult() ["00080050"]["vr"].asString());
1119 ASSERT_EQ("SH", visitor.GetResult() ["00080050"]["Value"][0].asString());
1120
1121 ASSERT_EQ("SL", visitor.GetResult() ["00186020"]["vr"].asString());
1122 ASSERT_FLOAT_EQ(-15, visitor.GetResult() ["00186020"]["Value"][0].asInt());
1123
1124 ASSERT_EQ("SS", visitor.GetResult() ["00189219"]["vr"].asString());
1125 ASSERT_FLOAT_EQ(-16, visitor.GetResult() ["00189219"]["Value"][0].asInt());
1126
1127 ASSERT_EQ("ST", visitor.GetResult() ["00080081"]["vr"].asString());
1128 ASSERT_EQ("ST", visitor.GetResult() ["00080081"]["Value"][0].asString());
1129
1130 ASSERT_EQ("TM", visitor.GetResult() ["00080013"]["vr"].asString());
1131 ASSERT_EQ("TM", visitor.GetResult() ["00080013"]["Value"][0].asString());
1132
1133 ASSERT_EQ("UC", visitor.GetResult() ["00080119"]["vr"].asString());
1134 ASSERT_EQ("UC", visitor.GetResult() ["00080119"]["Value"][0].asString());
1135
1136 ASSERT_EQ("UI", visitor.GetResult() ["00080016"]["vr"].asString());
1137 ASSERT_EQ("UI", visitor.GetResult() ["00080016"]["Value"][0].asString());
1138
1139 ASSERT_EQ("UL", visitor.GetResult() ["00081161"]["vr"].asString());
1140 ASSERT_EQ(128, visitor.GetResult() ["00081161"]["Value"][0].asUInt());
1141
1142 ASSERT_EQ("UN", visitor.GetResult() ["43421234"]["vr"].asString());
1143 Toolbox::DecodeBase64(s, visitor.GetResult() ["43421234"]["InlineBinary"].asString());
1144 ASSERT_EQ("UN", s);
1145
1146 ASSERT_EQ("UR", visitor.GetResult() ["00080120"]["vr"].asString());
1147 ASSERT_EQ("UR", visitor.GetResult() ["00080120"]["Value"][0].asString());
1148
1149 ASSERT_EQ("US", visitor.GetResult() ["00080301"]["vr"].asString());
1150 ASSERT_EQ(17, visitor.GetResult() ["00080301"]["Value"][0].asUInt());
1151
1152 ASSERT_EQ("UT", visitor.GetResult() ["00400031"]["vr"].asString());
1153 ASSERT_EQ("UT", visitor.GetResult() ["00400031"]["Value"][0].asString());
1154 }
1155
1156
1157 TEST(DicomWebJson, Sequence)
1158 {
1159 ParsedDicomFile dicom(false);
1160
1161 {
1162 std::auto_ptr<DcmSequenceOfItems> sequence(new DcmSequenceOfItems(DCM_ReferencedSeriesSequence));
1163
1164 for (unsigned int i = 0; i < 3; i++)
1165 {
1166 std::auto_ptr<DcmItem> item(new DcmItem);
1167 std::string s = "item" + boost::lexical_cast<std::string>(i);
1168 item->putAndInsertString(DCM_ReferencedSOPInstanceUID, s.c_str(), OFFalse);
1169 ASSERT_TRUE(sequence->insert(item.release(), false, false).good());
1170 }
1171
1172 ASSERT_TRUE(dicom.GetDcmtkObject().getDataset()->insert(sequence.release(), false, false).good());
1173 }
1174
1175 Orthanc::DicomJsonVisitor visitor;
1176 dicom.Apply(visitor);
1177
1178 ASSERT_EQ("SQ", visitor.GetResult() ["00081115"]["vr"].asString());
1179 ASSERT_EQ(3u, visitor.GetResult() ["00081115"]["Value"].size());
1180
1181 std::set<std::string> items;
1182
1183 for (Json::Value::ArrayIndex i = 0; i < 3; i++)
1184 {
1185 ASSERT_EQ(1u, visitor.GetResult() ["00081115"]["Value"][i].size());
1186 ASSERT_EQ(1u, visitor.GetResult() ["00081115"]["Value"][i]["00081155"]["Value"].size());
1187 ASSERT_EQ("UI", visitor.GetResult() ["00081115"]["Value"][i]["00081155"]["vr"].asString());
1188 items.insert(visitor.GetResult() ["00081115"]["Value"][i]["00081155"]["Value"][0].asString());
1189 }
1190
1191 ASSERT_EQ(3u, items.size());
1192 ASSERT_TRUE(items.find("item0") != items.end());
1193 ASSERT_TRUE(items.find("item1") != items.end());
1194 ASSERT_TRUE(items.find("item2") != items.end());
1195 }