1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#define BOOST_TEST_MODULE ElementAccessor
#include <boost/test/unit_test.hpp>
#include <dcmtk/config/osconfig.h>
#include <dcmtk/dcmdata/dcdatset.h>
#include <dcmtk/dcmdata/dcdeftag.h>
#include <dcmtk/dcmnet/dimse.h>
#include "odil/dcmtk/ElementAccessor.h"
#include "odil/dcmtk/VRTraits.h"
struct Fixture
{
DcmDataset dataset;
Fixture()
{
OFCondition condition;
condition = dataset.putAndInsertOFStringArray(DCM_PatientID, "DJ123");
if(condition.bad())
{
throw odil::dcmtk::Exception(condition);
}
condition = dataset.putAndInsertUint16(DCM_MessageID, 1234);
if(condition.bad())
{
throw odil::dcmtk::Exception(condition);
}
}
};
BOOST_FIXTURE_TEST_CASE(GetCorrectTypeString, Fixture)
{
BOOST_CHECK_EQUAL(
odil::dcmtk::ElementAccessor<std::string>::get(this->dataset, DCM_PatientID),
"DJ123");
}
BOOST_FIXTURE_TEST_CASE(GetCorrectVRString, Fixture)
{
BOOST_CHECK_EQUAL(
odil::dcmtk::ElementAccessor<
typename odil::dcmtk::VRTraits<EVR_LO>::ValueType
>::get(this->dataset, DCM_PatientID),
"DJ123");
}
BOOST_FIXTURE_TEST_CASE(GetCorrectTypeNonString, Fixture)
{
BOOST_CHECK_EQUAL(
odil::dcmtk::ElementAccessor<Uint16>::get(this->dataset, DCM_MessageID),
1234);
}
BOOST_FIXTURE_TEST_CASE(GetCorrectVRNonString, Fixture)
{
BOOST_CHECK_EQUAL(
odil::dcmtk::ElementAccessor<
typename odil::dcmtk::VRTraits<EVR_US>::ValueType
>::get(this->dataset, DCM_MessageID),
1234);
}
BOOST_FIXTURE_TEST_CASE(GetWrongTypeString, Fixture)
{
BOOST_CHECK_THROW(
odil::dcmtk::ElementAccessor<Float32>::get(this->dataset, DCM_PatientID),
odil::dcmtk::Exception);
}
BOOST_FIXTURE_TEST_CASE(GetWrongTypeNonString, Fixture)
{
BOOST_CHECK_THROW(
odil::dcmtk::ElementAccessor<Float32>::get(this->dataset, DCM_MessageID),
odil::dcmtk::Exception);
}
BOOST_FIXTURE_TEST_CASE(SetEmpty, Fixture)
{
odil::dcmtk::ElementAccessor<std::string>::set(this->dataset, DCM_PatientName, "FOO");
OFString value;
OFCondition const condition =
this->dataset.findAndGetOFString(DCM_PatientName, value);
BOOST_REQUIRE(condition.good());
BOOST_CHECK_EQUAL(std::string(value.c_str()), "FOO");
}
BOOST_FIXTURE_TEST_CASE(SetWrongTypeString, Fixture)
{
BOOST_CHECK_THROW(
odil::dcmtk::ElementAccessor<Float32>::set(
this->dataset, DCM_PatientName, 1.234),
odil::dcmtk::Exception);
}
BOOST_FIXTURE_TEST_CASE(SetWrongTypeNonString, Fixture)
{
BOOST_CHECK_THROW(
odil::dcmtk::ElementAccessor<Float64>::set(
this->dataset, DCM_Status, STATUS_Success),
odil::dcmtk::Exception);
}
BOOST_FIXTURE_TEST_CASE(SetExisting, Fixture)
{
odil::dcmtk::ElementAccessor<std::string>::set(this->dataset, DCM_PatientID, "FOO");
OFString value;
OFCondition const condition =
this->dataset.findAndGetOFString(DCM_PatientID, value);
BOOST_REQUIRE(condition.good());
BOOST_CHECK_EQUAL(std::string(value.c_str()), "FOO");
}
BOOST_FIXTURE_TEST_CASE(Has, Fixture)
{
BOOST_CHECK(
odil::dcmtk::ElementAccessor<std::string>::has(this->dataset, DCM_PatientID));
}
BOOST_FIXTURE_TEST_CASE(HasNot, Fixture)
{
BOOST_CHECK(
!odil::dcmtk::ElementAccessor<std::string>::has(this->dataset, DCM_PatientName));
}
|