comparison UnitTestsSources/FromDcmtkTests.cpp @ 1739:df331354cea2

include binary in ToJson
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 22 Oct 2015 19:00:32 +0200
parents b953c6eef28d
children 1b1d5470233f
comparison
equal deleted inserted replaced
1738:15a788a63846 1739:df331354cea2
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 523
524 TEST(ParsedDicomFile, ToJsonFlags) 524
525 TEST(ParsedDicomFile, ToJsonFlags1)
525 { 526 {
526 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7053, 0x1000), EVR_PN, "MyPrivateTag", 1, 1); 527 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7053, 0x1000), EVR_PN, "MyPrivateTag", 1, 1);
527 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7050, 0x1000), EVR_PN, "Declared public tag", 1, 1); 528 FromDcmtkBridge::RegisterDictionaryTag(DicomTag(0x7050, 0x1000), EVR_PN, "Declared public tag", 1, 1);
528 529
529 { 530 ParsedDicomFile f;
530 ParsedDicomFile f; 531 f.Insert(DicomTag(0x7050, 0x1000), "Some public tag", false); // Even group => public tag
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
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
533 f.Insert(DicomTag(0x7053, 0x1000), "Some private tag", false); // Odd group => private tag 534
534 535 Json::Value v;
535 Json::Value v; 536 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0);
536 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_None, 0); 537 ASSERT_EQ(Json::objectValue, v.type());
537 ASSERT_EQ(Json::objectValue, v.type()); 538 ASSERT_EQ(6, v.getMemberNames().size());
538 ASSERT_EQ(6, v.getMemberNames().size()); 539 ASSERT_FALSE(v.isMember("7052,1000"));
539 ASSERT_FALSE(v.isMember("7052,1000")); 540 ASSERT_FALSE(v.isMember("7053,1000"));
540 ASSERT_FALSE(v.isMember("7053,1000")); 541 ASSERT_TRUE(v.isMember("7050,1000"));
541 ASSERT_TRUE(v.isMember("7050,1000")); 542 ASSERT_EQ(Json::stringValue, v["7050,1000"].type());
542 ASSERT_EQ(Json::stringValue, v["7050,1000"].type()); 543 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
543 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 544
544 545 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0);
545 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludePrivateTags, 0); 546 ASSERT_EQ(Json::objectValue, v.type());
546 ASSERT_EQ(Json::objectValue, v.type()); 547 ASSERT_EQ(7, v.getMemberNames().size());
547 ASSERT_EQ(7, v.getMemberNames().size()); 548 ASSERT_FALSE(v.isMember("7052,1000"));
548 ASSERT_FALSE(v.isMember("7052,1000")); 549 ASSERT_TRUE(v.isMember("7050,1000"));
549 ASSERT_TRUE(v.isMember("7050,1000")); 550 ASSERT_TRUE(v.isMember("7053,1000"));
550 ASSERT_TRUE(v.isMember("7053,1000")); 551 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
551 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 552 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING
552 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING 553
553 554 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludeUnknownTags, 0);
554 f.ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_IncludeUnknownTags, 0); 555 ASSERT_EQ(Json::objectValue, v.type());
555 ASSERT_EQ(Json::objectValue, v.type()); 556 ASSERT_EQ(7, v.getMemberNames().size());
556 ASSERT_EQ(7, v.getMemberNames().size()); 557 ASSERT_TRUE(v.isMember("7050,1000"));
557 ASSERT_TRUE(v.isMember("7050,1000")); 558 ASSERT_TRUE(v.isMember("7052,1000"));
558 ASSERT_TRUE(v.isMember("7052,1000")); 559 ASSERT_FALSE(v.isMember("7053,1000"));
559 ASSERT_FALSE(v.isMember("7053,1000")); 560 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
560 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 561 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING
561 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING 562
562 563 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_IncludePrivateTags), 0);
563 f.ToJson(v, DicomToJsonFormat_Short, static_cast<DicomToJsonFlags>(DicomToJsonFlags_IncludeUnknownTags | DicomToJsonFlags_IncludePrivateTags), 0); 564 ASSERT_EQ(Json::objectValue, v.type());
564 ASSERT_EQ(Json::objectValue, v.type()); 565 ASSERT_EQ(8, v.getMemberNames().size());
565 ASSERT_EQ(8, v.getMemberNames().size()); 566 ASSERT_TRUE(v.isMember("7050,1000"));
566 ASSERT_TRUE(v.isMember("7050,1000")); 567 ASSERT_TRUE(v.isMember("7052,1000"));
567 ASSERT_TRUE(v.isMember("7052,1000")); 568 ASSERT_TRUE(v.isMember("7053,1000"));
568 ASSERT_TRUE(v.isMember("7053,1000")); 569 ASSERT_EQ("Some public tag", v["7050,1000"].asString());
569 ASSERT_EQ("Some public tag", v["7050,1000"].asString()); 570 ASSERT_EQ(Json::nullValue, v["7052,1000"].type()); // TODO SHOULD BE STRING
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
571 ASSERT_EQ(Json::nullValue, v["7053,1000"].type()); // TODO SHOULD BE STRING 572 }
572 } 573
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 }