/* * * Copyright (C) 2011-2018, OFFIS e.V. * All rights reserved. See COPYRIGHT file for details. * * This software and supporting documentation were developed by * * OFFIS e.V. * R&D Division Health * Escherweg 2 * D-26121 Oldenburg, Germany * * * Module: dcmdata * * Author: Joerg Riesmeier * * Purpose: test program for class DcmUniqueIdentifier * */ #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ #include "dcmtk/ofstd/oftest.h" #include "dcmtk/dcmdata/dcvrui.h" #include "dcmtk/dcmdata/dcdeftag.h" OFTEST(dcmdata_uniqueIdentifier_1) { /* test UI value with 0-byte padding */ OFString value; DcmUniqueIdentifier sopInstanceUID(DCM_SOPInstanceUID); dcmEnableAutomaticInputDataCorrection.set(OFTrue); OFCHECK(sopInstanceUID.putString("1.2.3.4\0", 8).good()); OFCHECK_EQUAL(sopInstanceUID.getNumberOfValues(), 1); OFCHECK(sopInstanceUID.checkValue("1").good()); OFCHECK(sopInstanceUID.getOFString(value, 0).good()); OFCHECK_EQUAL(value, "1.2.3.4"); // switch automatic data correct off dcmEnableAutomaticInputDataCorrection.set(OFFalse); OFCHECK(sopInstanceUID.putString("1.2.3.4\\5.6.7.8").good()); OFCHECK_EQUAL(sopInstanceUID.getNumberOfValues(), 2); OFCHECK(sopInstanceUID.checkValue("2").good()); OFCHECK(sopInstanceUID.putString("1.2.3.4\\5.6.7.8\0", 16).good()); // the trailing 0-byte is still there, which leads to an error OFCHECK(sopInstanceUID.checkValue("2").bad()); OFCHECK(sopInstanceUID.getOFString(value, 1 /*, normalize = OFTrue */).good()); OFCHECK_EQUAL(value, "5.6.7.8"); OFCHECK(sopInstanceUID.getOFString(value, 1, OFFalse /*normalize*/).good()); OFCHECK_EQUAL(value, OFString("5.6.7.8\0", 8)); } OFTEST(dcmdata_uniqueIdentifier_2) { /* test UI value with space character padding */ OFString value; DcmUniqueIdentifier sopInstanceUID(DCM_SOPInstanceUID); dcmEnableAutomaticInputDataCorrection.set(OFTrue); OFCHECK(sopInstanceUID.putString("1.2.3.4 ").good()); OFCHECK(sopInstanceUID.checkValue("1").good()); OFCHECK(sopInstanceUID.putString("1.2.3.4 ").good()); OFCHECK(sopInstanceUID.checkValue("1").good()); OFCHECK(sopInstanceUID.getOFString(value, 0).good()); OFCHECK_EQUAL(value, "1.2.3.4"); // we also accept leading and embedded space characters OFCHECK(sopInstanceUID.putString(" 1.2.3.4 ").good()); OFCHECK(sopInstanceUID.checkValue("1").good()); OFCHECK(sopInstanceUID.putString("1.2. 3.4").good()); OFCHECK(sopInstanceUID.checkValue("1").good()); OFCHECK(sopInstanceUID.getOFString(value, 0).good()); OFCHECK_EQUAL(value, "1.2.3.4"); // switch automatic data correct off dcmEnableAutomaticInputDataCorrection.set(OFFalse); OFCHECK(sopInstanceUID.putString("1.2.3.4 ").good()); OFCHECK(sopInstanceUID.checkValue("1").bad()); OFCHECK(sopInstanceUID.getOFString(value, 0).good()); OFCHECK_EQUAL(value, "1.2.3.4 "); OFCHECK(sopInstanceUID.putString("1.2.3.4\\5.6.7.8 ").good()); OFCHECK(sopInstanceUID.checkValue("2").bad()); OFCHECK(sopInstanceUID.getOFString(value, 0).good()); OFCHECK_EQUAL(value, "1.2.3.4"); OFCHECK(sopInstanceUID.getOFString(value, 1).good()); OFCHECK_EQUAL(value, "5.6.7.8 "); }