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 }