comparison UnitTestsSources/FromDcmtkTests.cpp @ 1744:b3de74dec2d5 db-changes

integration mainline->db-changes
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 26 Oct 2015 12:30:34 +0100
parents df331354cea2
children 1b1d5470233f
comparison
equal deleted inserted replaced
1729:54d78925cbb6 1744:b3de74dec2d5
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
525 TEST(ParsedDicomFile, ToJsonFlags1)
526 {
527 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7053, 0x1000), EVR_PN, "MyPrivateTag", 1, 1);
528 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7050, 0x1000), EVR_PN, "Declared public tag", 1, 1);
529
530 ParsedDicomFile f;
531 f.Insert(DicomTag(0x7050, 0x1000), "Some public tag", false); // Even group => public tag
532 f.Insert(DicomTag(0x7052, 0x1000), "Some unknown tag", false); // Even group => public, unknown tag
533 f.Insert(DicomTag(0x7053, 0x1000), "Some private tag", false); // Odd group => private tag
534
535 Json::Value v;
536 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0);
537 ASSERT_EQ(Json::objectValue, v.type());
538 ASSERT_EQ(6, v.getMemberNames().size());
539 ASSERT_FALSE(v.isMember("7052,1000"));
540 ASSERT_FALSE(v.isMember("7053,1000"));
541 ASSERT_TRUE(v.isMember("7050,1000"));
542 ASSERT_EQ(Json::stringValue, v["7050,1000"].type());
543 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
544
545 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0);
546 ASSERT_EQ(Json::objectValue, v.type());
547 ASSERT_EQ(7, v.getMemberNames().size());
548 ASSERT_FALSE(v.isMember("7052,1000"));
549 ASSERT_TRUE(v.isMember("7050,1000"));
550 ASSERT_TRUE(v.isMember("7053,1000"));
551 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
552 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING
553
554 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludeUnknownTags, 0);
555 ASSERT_EQ(Json::objectValue, v.type());
556 ASSERT_EQ(7, v.getMemberNames().size());
557 ASSERT_TRUE(v.isMember("7050,1000"));
558 ASSERT_TRUE(v.isMember("7052,1000"));
559 ASSERT_FALSE(v.isMember("7053,1000"));
560 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
561 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING
562
563 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_IncludePrivateTags), 0);
564 ASSERT_EQ(Json::objectValue, v.type());
565 ASSERT_EQ(8, v.getMemberNames().size());
566 ASSERT_TRUE(v.isMember("7050,1000"));
567 ASSERT_TRUE(v.isMember("7052,1000"));
568 ASSERT_TRUE(v.isMember("7053,1000"));
569 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
570 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING
571 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING
572 }
573
574
575 TEST(ParsedDicomFile, ToJsonFlags2)
576 {
577 ParsedDicomFile f;
578 f.Insert(DICOM_TAG_PIXEL_DATA, "Pixels", false);
579
580 Json::Value v;
581 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0);
582 ASSERT_EQ(Json::objectValue, v.type());
583 ASSERT_EQ(5, v.getMemberNames().size());
584 ASSERT_FALSE(v.isMember("7fe0,0010"));
585
586 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToNull), 0);
587 ASSERT_EQ(Json::objectValue, v.type());
588 ASSERT_EQ(6, v.getMemberNames().size());
589 ASSERT_TRUE(v.isMember("7fe0,0010"));
590 ASSERT_EQ(Json::nullValue, v["7fe0,0010"].type());
591
592 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludePixelData | DicomToJsonFlags_ConvertBinaryToAscii), 0);
593 ASSERT_EQ(Json::objectValue, v.type());
594 ASSERT_EQ(6, v.getMemberNames().size());
595 ASSERT_TRUE(v.isMember("7fe0,0010"));
596 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type());
597 ASSERT_EQ("Pixels", v["7fe0,0010"].asString());
598
599 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePixelData, 0);
600 ASSERT_EQ(Json::objectValue, v.type());
601 ASSERT_EQ(6, v.getMemberNames().size());
602 ASSERT_TRUE(v.isMember("7fe0,0010"));
603 ASSERT_EQ(Json::stringValue, v["7fe0,0010"].type());
604 std::string mime, content;
605 Toolbox::DecodeDataUriScheme(mime, content, v["7fe0,0010"].asString());
606 ASSERT_EQ("application/octet-stream", mime);
607 ASSERT_EQ("Pixels", content);
608 }