comparison 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
comparison
equal deleted inserted replaced
1689:26083d84d237 1690:ae09132e4237
41 #include "../Core/Images/PngReader.h" 41 #include "../Core/Images/PngReader.h"
42 #include "../Core/Images/PngWriter.h" 42 #include "../Core/Images/PngWriter.h"
43 #include "../Core/Uuid.h" 43 #include "../Core/Uuid.h"
44 #include "../Resources/EncodingTests.h" 44 #include "../Resources/EncodingTests.h"
45 45
46 #include <dcmtk/dcmdata/dcelem.h>
47
46 using namespace Orthanc; 48 using namespace Orthanc;
47 49
48 TEST(DicomFormat, Tag) 50 TEST(DicomFormat, Tag)
49 { 51 {
50 ASSERT_EQ("PatientName", FromDcmtkBridge::GetName(DicomTag(0x0010, 0x0010))); 52 ASSERT_EQ("PatientName", FromDcmtkBridge::GetName(DicomTag(0x0010, 0x0010)));
297 ASSERT_EQ(ValueRepresentation_DateTime, 299 ASSERT_EQ(ValueRepresentation_DateTime,
298 FromDcmtkBridge::GetValueRepresentation(DicomTag(0x0008, 0x002a) /* AcquisitionDateTime */)); 300 FromDcmtkBridge::GetValueRepresentation(DicomTag(0x0008, 0x002a) /* AcquisitionDateTime */));
299 ASSERT_EQ(ValueRepresentation_Other, 301 ASSERT_EQ(ValueRepresentation_Other,
300 FromDcmtkBridge::GetValueRepresentation(DICOM_TAG_PATIENT_ID)); 302 FromDcmtkBridge::GetValueRepresentation(DICOM_TAG_PATIENT_ID));
301 } 303 }
304
305
306 TEST(FromDcmtkBridge, FromJson)
307 {
308 const DicomTag REFERENCED_STUDY_SEQUENCE(0x0008, 0x1110);
309
310 std::auto_ptr<DcmElement> element;
311
312 {
313 Json::Value a;
314 a = "Hello";
315 element.reset(FromDcmtkBridge::FromJson(a, DICOM_TAG_PATIENT_NAME, false));
316
317 Json::Value b;
318 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii);
319 ASSERT_EQ("Hello", b["0010,0010"].asString());
320 }
321
322 {
323 Json::Value a;
324 a = "Hello";
325 // Cannot assign a string to a sequence
326 ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(a, REFERENCED_STUDY_SEQUENCE, false)), OrthancException);
327 }
328
329 {
330 Json::Value a = Json::arrayValue;
331 a.append("Hello");
332 // Cannot assign an array to a string
333 ASSERT_THROW(element.reset(FromDcmtkBridge::FromJson(a, DICOM_TAG_PATIENT_NAME, false)), OrthancException);
334 }
335
336 {
337 Json::Value a;
338 a = "data:application/octet-stream;base64,SGVsbG8="; // echo -n "Hello" | base64
339 element.reset(FromDcmtkBridge::FromJson(a, DICOM_TAG_PATIENT_NAME, true));
340
341 Json::Value b;
342 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Short, 0, Encoding_Ascii);
343 ASSERT_EQ("Hello", b["0010,0010"].asString());
344 }
345
346 printf("ici\n");
347
348 {
349 Json::Value a = Json::arrayValue;
350
351 {
352 Json::Value b = Json::objectValue;
353 b["PatientName"] = "Hello";
354 b["PatientID"] = "World";
355 a.append(b);
356 }
357
358 {
359 Json::Value b = Json::objectValue;
360 b["PatientName"] = "Hello2";
361 b["PatientID"] = "World2";
362 a.append(b);
363 }
364
365 element.reset(FromDcmtkBridge::FromJson(a, REFERENCED_STUDY_SEQUENCE, false));
366 element->writeXML(std::cout);
367
368 {
369 Json::Value b;
370 FromDcmtkBridge::ToJson(b, *element, DicomToJsonFormat_Full, 0, Encoding_Ascii);
371 /*ASSERT_EQ(Json::arrayValue, b["0008,1110"].type());
372 ASSERT_EQ(2, b["0008,1110"].size());*/
373
374 std::cout << b;
375 }
376 }
377
378
379
380 // TODO: Test Simplify
381 }