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
|
/*
*
* Copyright (C) 2019-2022, J. Riesmeier, Oldenburg, Germany
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation are maintained by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmdata
*
* Author: Joerg Riesmeier
*
* Purpose: test program for class DcmSequence and DcmPixelSequence
*
*/
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/ofstd/oftest.h"
#include "dcmtk/dcmdata/dcitem.h"
#include "dcmtk/dcmdata/dcdatset.h"
#include "dcmtk/dcmdata/dcsequen.h"
#include "dcmtk/dcmdata/dcpxitem.h"
#include "dcmtk/dcmdata/dcpixseq.h"
#include "dcmtk/dcmdata/dcdeftag.h"
#define NUMBER_OF_ITEMS 99999
OFTEST(dcmdata_sequenceInsert)
{
DcmSequenceOfItems sequence(DCM_OtherPatientIDsSequence);
/* add a large number of items to the sequence */
unsigned long counter = 0;
for (unsigned long i = 0; i < NUMBER_OF_ITEMS; ++i)
{
if (sequence.insert(new DcmItem()).good())
++counter;
}
/* check whether that worked (for-loop shouldn't take too long) */
OFCHECK_EQUAL(counter, NUMBER_OF_ITEMS);
/* access specific items (performance should be no issue) */
OFCHECK(sequence.getItem(0) != NULL);
OFCHECK(sequence.getItem(2) != NULL);
OFCHECK(sequence.getItem(NUMBER_OF_ITEMS) == NULL);
OFCHECK(sequence.getItem(NUMBER_OF_ITEMS - 1) != NULL);
OFCHECK(sequence.getItem(NUMBER_OF_ITEMS - 2) != NULL);
}
OFTEST(dcmdata_pixelSequenceInsert)
{
DcmPixelItem *pixelItem = NULL;
DcmPixelSequence pixelSequence(DCM_PixelData);
/* add a large number of items to the sequence */
unsigned long counter = 0;
for (unsigned long i = 0; i < NUMBER_OF_ITEMS; ++i)
{
if (pixelSequence.insert(new DcmPixelItem(DCM_PixelItemTag)).good())
++counter;
}
/* check whether that worked (for-loop shouldn't take too long) */
OFCHECK_EQUAL(counter, NUMBER_OF_ITEMS);
/* access specific items (performance should be no issue) */
OFCHECK(pixelSequence.getItem(pixelItem, 0).good());
OFCHECK(pixelSequence.getItem(pixelItem, 2).good());
OFCHECK(pixelSequence.getItem(pixelItem, NUMBER_OF_ITEMS).bad());
OFCHECK(pixelSequence.getItem(pixelItem, NUMBER_OF_ITEMS - 1).good());
OFCHECK(pixelSequence.getItem(pixelItem, NUMBER_OF_ITEMS - 2).good());
}
OFTEST(dcmdata_findAndGetSequenceItem)
{
DcmDataset dataset;
DcmItem *item = NULL;
/* first, create a dataset with a sequence and a pixel sequence */
OFCHECK(dataset.insertSequenceItem(DCM_OtherPatientIDsSequence, new DcmItem()).good());
OFCHECK(dataset.insertSequenceItem(DCM_PixelData, new DcmItem()).good());
/* try to retrieve the item from the sequence elements */
OFCHECK(dataset.findAndGetSequenceItem(DCM_OtherPatientIDsSequence, item).good());
OFCHECK(dataset.findAndGetSequenceItem(DCM_PixelData, item).good());
/* the following should fail */
OFCHECK(dataset.findAndGetSequenceItem(DCM_OtherPatientIDsSequence, item, 1).bad());
OFCHECK(dataset.findAndGetSequenceItem(DCM_PixelData, item, 1).bad());
/* then, try to create the items by some other means */
OFCHECK(dataset.findOrCreateSequenceItem(DCM_OtherPatientIDsSequence, item, 1).good());
OFCHECK(dataset.findOrCreateSequenceItem(DCM_PixelData, item, 1).good());
/* now, it should work */
OFCHECK(dataset.findAndGetSequenceItem(DCM_OtherPatientIDsSequence, item, 1).good());
OFCHECK(dataset.findAndGetSequenceItem(DCM_PixelData, item, 1).good());
}
|