Mercurial > hg > orthanc
diff UnitTestsSources/FromDcmtkTests.cpp @ 1690:ae09132e4237
FromJson
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 07 Oct 2015 17:42:42 +0200 |
parents | 3727a09e7b53 |
children | e447f3cb8b30 |
line wrap: on
line diff
--- a/UnitTestsSources/FromDcmtkTests.cpp Wed Oct 07 16:54:05 2015 +0200 +++ b/UnitTestsSources/FromDcmtkTests.cpp Wed Oct 07 17:42:42 2015 +0200 @@ -43,6 +43,8 @@ #include "../Core/Uuid.h" #include "../Resources/EncodingTests.h" +#include <dcmtk/dcmdata/dcelem.h> + using namespace Orthanc; TEST(DicomFormat, Tag) @@ -299,3 +301,81 @@ ASSERT_EQ(ValueRepresentation_Other, FromDcmtkBridge::GetValueRepresentation(DICOM_TAG_PATIENT_ID)); } + + +TEST(FromDcmtkBridge, FromJson) +{ + const DicomTag REFERENCED_STUDY_SEQUENCE(0x0008, 0x1110); + + std::auto_ptr<DcmElement> element; + + { + Json::Value a; + a = "Hello"; + element.reset(FromDcmtkBridge::FromJson(a, DICOM_TAG_PATIENT_NAME, false)); + + Json::Value b; + FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); + ASSERT_EQ("Hello", b["0010,0010"].asString()); + } + + { + Json::Value a; + a = "Hello"; + // Cannot assign a string to a sequence + ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(a, REFERENCED_STUDY_SEQUENCE, false)), OrthancException); + } + + { + Json::Value a = Json::arrayValue; + a.append("Hello"); + // Cannot assign an array to a string + ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(a, DICOM_TAG_PATIENT_NAME, false)), OrthancException); + } + + { + Json::Value a; + a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64 + element.reset(FromDcmtkBridge::FromJson(a, DICOM_TAG_PATIENT_NAME, true)); + + Json::Value b; + FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii); + ASSERT_EQ("Hello", b["0010,0010"].asString()); + } + + printf("ici\n"); + + { + Json::Value a = Json::arrayValue; + + { + Json::Value b = Json::objectValue; + b["PatientName"] = "Hello"; + b["PatientID"] = "World"; + a.append(b); + } + + { + Json::Value b = Json::objectValue; + b["PatientName"] = "Hello2"; + b["PatientID"] = "World2"; + a.append(b); + } + + element.reset(FromDcmtkBridge::FromJson(a, REFERENCED_STUDY_SEQUENCE, false)); + element->writeXML(std::cout); + + { + Json::Value b; + FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Full, 0, Encoding_Ascii); + /*ASSERT_EQ(Json::arrayValue, b["0008,1110"].type()); + ASSERT_EQ(2, b["0008,1110"].size());*/ + + std::cout << b; + } + } + + + + // TODO: Test Simplify +}