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
+}