Mercurial > hg > orthanc
comparison OrthancFramework/UnitTestsSources/FromDcmtkTests.cpp @ 5318:68e15471b408
added ParsedDicomFile::InjectEmptyPixelData()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 23 Jun 2023 18:01:55 +0200 |
parents | 800261398381 |
children | f2e1ad71e49c |
comparison
equal
deleted
inserted
replaced
5317:9875e1f24394 | 5318:68e15471b408 |
---|---|
3219 DicomMap m; | 3219 DicomMap m; |
3220 m.FromDicomWeb(v); | 3220 m.FromDicomWeb(v); |
3221 } | 3221 } |
3222 | 3222 |
3223 | 3223 |
3224 TEST(ParsedDicomFile, InjectEmptyPixelData) | |
3225 { | |
3226 static const char* PIXEL_DATA = "7FE00010"; | |
3227 | |
3228 { | |
3229 ParsedDicomFile dicom(true); | |
3230 | |
3231 DicomWebJsonVisitor visitor; | |
3232 dicom.Apply(visitor); | |
3233 | |
3234 ASSERT_FALSE(visitor.GetResult().isMember(PIXEL_DATA)); | |
3235 } | |
3236 | |
3237 { | |
3238 ParsedDicomFile dicom(true); | |
3239 dicom.InjectEmptyPixelData(ValueRepresentation_OtherByte); | |
3240 dicom.InjectEmptyPixelData(ValueRepresentation_OtherWord); // Must be ignored | |
3241 | |
3242 DicomWebJsonVisitor visitor; | |
3243 dicom.Apply(visitor); | |
3244 | |
3245 ASSERT_TRUE(visitor.GetResult().isMember(PIXEL_DATA)); | |
3246 ASSERT_EQ(2u, visitor.GetResult() [PIXEL_DATA].size()); | |
3247 ASSERT_EQ("", visitor.GetResult() [PIXEL_DATA]["InlineBinary"].asString()); | |
3248 ASSERT_EQ("OB", visitor.GetResult() [PIXEL_DATA]["vr"].asString()); | |
3249 } | |
3250 | |
3251 { | |
3252 ParsedDicomFile dicom(true); | |
3253 dicom.InjectEmptyPixelData(ValueRepresentation_OtherWord); | |
3254 dicom.InjectEmptyPixelData(ValueRepresentation_OtherByte); // Must be ignored | |
3255 | |
3256 DicomWebJsonVisitor visitor; | |
3257 dicom.Apply(visitor); | |
3258 | |
3259 ASSERT_TRUE(visitor.GetResult().isMember(PIXEL_DATA)); | |
3260 ASSERT_EQ(2u, visitor.GetResult() [PIXEL_DATA].size()); | |
3261 ASSERT_EQ("", visitor.GetResult() [PIXEL_DATA]["InlineBinary"].asString()); | |
3262 ASSERT_EQ("OW", visitor.GetResult() [PIXEL_DATA]["vr"].asString()); | |
3263 } | |
3264 } | |
3265 | |
3266 | |
3267 TEST(ParsedDicomFile, DISABLED_InjectEmptyPixelData2) | |
3268 { | |
3269 static const char* PIXEL_DATA = "7FE00010"; | |
3270 | |
3271 for (int i = 0; i <= DicomTransferSyntax_XML; i++) | |
3272 { | |
3273 DicomTransferSyntax a = (DicomTransferSyntax) i; | |
3274 | |
3275 std::string path = (std::string(getenv("HOME")) + | |
3276 "/Subversion/orthanc-tests/Database/TransferSyntaxes/" + | |
3277 std::string(GetTransferSyntaxUid(a)) + ".dcm"); | |
3278 if (Orthanc::SystemToolbox::IsRegularFile(path)) | |
3279 { | |
3280 printf("\n======= %s\n", GetTransferSyntaxUid(a)); | |
3281 | |
3282 std::string source; | |
3283 Orthanc::SystemToolbox::ReadFile(source, path); | |
3284 | |
3285 ParsedDicomFile dicom(source); | |
3286 std::unique_ptr<DcmElement> removal(dicom.GetDcmtkObject().getDataset()->remove(DCM_PixelData)); | |
3287 | |
3288 { | |
3289 DicomWebJsonVisitor visitor; | |
3290 dicom.Apply(visitor); | |
3291 ASSERT_FALSE(visitor.GetResult().isMember(PIXEL_DATA)); | |
3292 } | |
3293 | |
3294 { | |
3295 DicomWebJsonVisitor visitor; | |
3296 dicom.InjectEmptyPixelData(ValueRepresentation_OtherByte); | |
3297 dicom.Apply(visitor); | |
3298 ASSERT_TRUE(visitor.GetResult().isMember(PIXEL_DATA)); | |
3299 ASSERT_EQ("OB", visitor.GetResult() [PIXEL_DATA]["vr"].asString()); | |
3300 } | |
3301 | |
3302 removal.reset(dicom.GetDcmtkObject().getDataset()->remove(DCM_PixelData)); | |
3303 | |
3304 { | |
3305 DicomWebJsonVisitor visitor; | |
3306 dicom.InjectEmptyPixelData(ValueRepresentation_OtherWord); | |
3307 dicom.Apply(visitor); | |
3308 ASSERT_TRUE(visitor.GetResult().isMember(PIXEL_DATA)); | |
3309 ASSERT_EQ("OW", visitor.GetResult() [PIXEL_DATA]["vr"].asString()); | |
3310 } | |
3311 } | |
3312 } | |
3313 } | |
3314 | |
3315 | |
3224 | 3316 |
3225 | 3317 |
3226 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 | 3318 #if ORTHANC_ENABLE_DCMTK_TRANSCODING == 1 |
3227 | 3319 |
3228 #include "../Sources/DicomNetworking/DicomStoreUserConnection.h" | 3320 #include "../Sources/DicomNetworking/DicomStoreUserConnection.h" |
3238 scu.SetRetiredBigEndianProposed(true); | 3330 scu.SetRetiredBigEndianProposed(true); |
3239 | 3331 |
3240 DcmtkTranscoder transcoder; | 3332 DcmtkTranscoder transcoder; |
3241 | 3333 |
3242 for (int j = 0; j < 2; j++) | 3334 for (int j = 0; j < 2; j++) |
3335 { | |
3243 for (int i = 0; i <= DicomTransferSyntax_XML; i++) | 3336 for (int i = 0; i <= DicomTransferSyntax_XML; i++) |
3244 { | 3337 { |
3245 DicomTransferSyntax a = (DicomTransferSyntax) i; | 3338 DicomTransferSyntax a = (DicomTransferSyntax) i; |
3246 | 3339 |
3247 std::string path = ("/home/jodogne/Subversion/orthanc-tests/Database/TransferSyntaxes/" + | 3340 std::string path = (std::string(getenv("HOME")) + |
3341 "/Subversion/orthanc-tests/Database/TransferSyntaxes/" + | |
3248 std::string(GetTransferSyntaxUid(a)) + ".dcm"); | 3342 std::string(GetTransferSyntaxUid(a)) + ".dcm"); |
3249 if (Orthanc::SystemToolbox::IsRegularFile(path)) | 3343 if (Orthanc::SystemToolbox::IsRegularFile(path)) |
3250 { | 3344 { |
3251 printf("\n======= %s\n", GetTransferSyntaxUid(a)); | 3345 printf("\n======= %s\n", GetTransferSyntaxUid(a)); |
3252 | 3346 |
3270 throw; | 3364 throw; |
3271 } | 3365 } |
3272 } | 3366 } |
3273 } | 3367 } |
3274 } | 3368 } |
3369 } | |
3275 } | 3370 } |
3276 | 3371 |
3277 | 3372 |
3278 TEST(Toto, DISABLED_Transcode4) | 3373 TEST(Toto, DISABLED_Transcode4) |
3279 { | 3374 { |
3280 std::unique_ptr<DcmFileFormat> toto; | 3375 std::unique_ptr<DcmFileFormat> toto; |
3281 | 3376 |
3282 { | 3377 { |
3283 std::string source; | 3378 std::string source; |
3284 Orthanc::SystemToolbox::ReadFile(source, "/home/jodogne/Subversion/orthanc-tests/Database/KarstenHilbertRF.dcm"); | 3379 Orthanc::SystemToolbox::ReadFile(source, std::string(getenv("HOME")) + |
3380 "/Subversion/orthanc-tests/Database/KarstenHilbertRF.dcm"); | |
3285 toto.reset(FromDcmtkBridge::LoadFromMemoryBuffer(source.c_str(), source.size())); | 3381 toto.reset(FromDcmtkBridge::LoadFromMemoryBuffer(source.c_str(), source.size())); |
3286 } | 3382 } |
3287 | 3383 |
3288 const std::string sourceUid = IDicomTranscoder::GetSopInstanceUid(*toto); | 3384 const std::string sourceUid = IDicomTranscoder::GetSopInstanceUid(*toto); |
3289 | 3385 |