Mercurial > hg > orthanc
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 } |