Mercurial > hg > orthanc
comparison UnitTestsSources/FromDcmtkTests.cpp @ 1735:a001f6226c7c
primitives for flags in dicom-to-json conversions
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 21 Oct 2015 16:25:09 +0200 |
parents | 4aaaecae5803 |
children | b953c6eef28d |
comparison
equal
deleted
inserted
replaced
1734:e2675b37eb01 | 1735:a001f6226c7c |
---|---|
337 Json::Value a; | 337 Json::Value a; |
338 a = "Hello"; | 338 a = "Hello"; |
339 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false, Encoding_Utf8)); | 339 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, false, Encoding_Utf8)); |
340 | 340 |
341 Json::Value b; | 341 Json::Value b; |
342 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 342 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
343 ASSERT_EQ("Hello", b["0010,0010"].asString()); | 343 ASSERT_EQ("Hello", b["0010,0010"].asString()); |
344 } | 344 } |
345 | 345 |
346 { | 346 { |
347 Json::Value a; | 347 Json::Value a; |
361 Json::Value a; | 361 Json::Value a; |
362 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 | 362 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 |
363 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, true, Encoding_Utf8)); | 363 element.reset(FromDcmtkBridge::FromJson(DICOM_TAG_PATIENT_NAME, a, true, Encoding_Utf8)); |
364 | 364 |
365 Json::Value b; | 365 Json::Value b; |
366 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 366 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
367 ASSERT_EQ("Hello", b["0010,0010"].asString()); | 367 ASSERT_EQ("Hello", b["0010,0010"].asString()); |
368 } | 368 } |
369 | 369 |
370 { | 370 { |
371 Json::Value a = Json::arrayValue; | 371 Json::Value a = Json::arrayValue; |
372 CreateSampleJson(a); | 372 CreateSampleJson(a); |
373 element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, true, Encoding_Utf8)); | 373 element.reset(FromDcmtkBridge::FromJson(REFERENCED_STUDY_SEQUENCE, a, true, Encoding_Utf8)); |
374 | 374 |
375 { | 375 { |
376 Json::Value b; | 376 Json::Value b; |
377 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); | 377 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
378 ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); | 378 ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); |
379 ASSERT_EQ(2, b["0008,1110"].size()); | 379 ASSERT_EQ(2, b["0008,1110"].size()); |
380 | 380 |
381 Json::Value::ArrayIndex i = (b["0008,1110"][0]["0010,0010"].asString() == "Hello") ? 0 : 1; | 381 Json::Value::ArrayIndex i = (b["0008,1110"][0]["0010,0010"].asString() == "Hello") ? 0 : 1; |
382 | 382 |
389 ASSERT_EQ(b["0008,1110"][1 - i]["0010,0020"].asString(), "World2"); | 389 ASSERT_EQ(b["0008,1110"][1 - i]["0010,0020"].asString(), "World2"); |
390 } | 390 } |
391 | 391 |
392 { | 392 { |
393 Json::Value b; | 393 Json::Value b; |
394 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Full, 0, Encoding_Ascii); | 394 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Full, DicomToJsonFlags_Default, 0, Encoding_Ascii); |
395 | 395 |
396 Json::Value c; | 396 Json::Value c; |
397 Toolbox::SimplifyTags(c, b); | 397 Toolbox::SimplifyTags(c, b); |
398 | 398 |
399 a[1]["PatientName"] = "Hello2"; // To remove the Data URI Scheme encoding | 399 a[1]["PatientName"] = "Hello2"; // To remove the Data URI Scheme encoding |
468 f.Replace(REFERENCED_PATIENT_SEQUENCE, a, false, DicomReplaceMode_InsertIfAbsent); | 468 f.Replace(REFERENCED_PATIENT_SEQUENCE, a, false, DicomReplaceMode_InsertIfAbsent); |
469 ASSERT_TRUE(f.HasTag(REFERENCED_PATIENT_SEQUENCE)); | 469 ASSERT_TRUE(f.HasTag(REFERENCED_PATIENT_SEQUENCE)); |
470 | 470 |
471 { | 471 { |
472 Json::Value b; | 472 Json::Value b; |
473 f.ToJson(b, DicomToJsonFormat_Full, 0); | 473 f.ToJson(b, DicomToJsonFormat_Full, DicomToJsonFlags_Default, 0); |
474 | 474 |
475 Json::Value c; | 475 Json::Value c; |
476 Toolbox::SimplifyTags(c, b); | 476 Toolbox::SimplifyTags(c, b); |
477 | 477 |
478 ASSERT_EQ(0, c["ReferencedPatientSequence"].compare(a)); | 478 ASSERT_EQ(0, c["ReferencedPatientSequence"].compare(a)); |
513 | 513 |
514 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); | 514 Json::Value s = Toolbox::ConvertToUtf8(testEncodingsEncoded[i], testEncodings[i]); |
515 f.Replace(DICOM_TAG_PATIENT_NAME, s, false); | 515 f.Replace(DICOM_TAG_PATIENT_NAME, s, false); |
516 | 516 |
517 Json::Value v; | 517 Json::Value v; |
518 f.ToJson(v, DicomToJsonFormat_Simple, 0); | 518 f.ToJson(v, DicomToJsonFormat_Simple, DicomToJsonFlags_Default, 0); |
519 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i])); | 519 ASSERT_EQ(v["PatientName"].asString(), std::string(testEncodingsExpected[i])); |
520 } | 520 } |
521 } | 521 } |
522 } | 522 } |
523 | |
524 TEST(ParsedDicomFile, ToJsonFlags) | |
525 { | |
526 { | |
527 ParsedDicomFile f; | |
528 f.Insert(DicomTag(0x7053, 0x1000), "Some private tag", false); | |
529 | |
530 Json::Value v; | |
531 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); | |
532 ASSERT_EQ(Json::objectValue, v.type()); | |
533 ASSERT_EQ(5, v.getMemberNames().size()); | |
534 ASSERT_FALSE(v.isMember("7053-1000")); | |
535 | |
536 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0); | |
537 ASSERT_EQ(Json::objectValue, v.type()); | |
538 ASSERT_EQ(6, v.getMemberNames().size()); | |
539 ASSERT_TRUE(v.isMember("7053,1000")); | |
540 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); | |
541 } | |
542 } |