#include "gdcmCodeString.h"
#include "gdcmAttribute.h"
#include <iostream>
int TestCodeString(int , char *[])
{
{
gdcm::Attribute<0x0008,0x0008> at3;
static const gdcm::CSComp values[] = {"DERIVED","SECONDARY"};
at3.SetValues( values, 2, true );
if( at3.GetNumberOfValues() != 2 ) return 1;
}
const char fn1[] = "IMG01";
gdcm::Attribute< 0x0004, 0x1500 > at;
at.SetNumberOfValues( 1 );
at.SetValue( fn1 );
unsigned int n = at.GetNumberOfValues();
if( n != 1 ) return 1;
{
const char fn2[] = "SUBDIR\\IMG01";
at.SetNumberOfValues( 2 );
at.SetValue( fn2 );
n = at.GetNumberOfValues();
if( n != 2 ) return 1;
}
const char fn3[] = "SUBDIR1\\SUBDIR2\\IMG01 ";
{
gdcm::DataElement de( at.GetTag() );
de.SetByteValue( fn3, (uint32_t)strlen(fn3) );
at.SetFromDataElement( de );
n = at.GetNumberOfValues();
if( n != 3 ) return 1;
for( unsigned int i = 0; i < n; ++i)
{
gdcm::CodeString cs = at.GetValue( i );
if( !cs.IsValid() )
{
std::cerr << "Invalid CS: " << cs << std::endl;
return 1;
}
}
}
const char fn4[] = "SUBDIR1\\SUBDIR2\\IMG01";
{
std::string copy = fn4;
if( copy.size() % 2 )
{
copy.push_back( ' ' );
}
gdcm::DataElement de( at.GetTag() );
de.SetByteValue( copy.c_str(), (uint32_t)copy.size() );
at.SetFromDataElement( de );
n = at.GetNumberOfValues();
if( n != 3 ) return 1;
for( unsigned int i = 0; i < n; ++i)
{
gdcm::CodeString cs = at.GetValue( i );
if( !cs.IsValid() )
{
std::cerr << "Invalid CS: " << cs << std::endl;
return 1;
}
}
}
const char fn5[] = R"(SUBDIR1\SUBDIR2\LONGSUBDIR\IMG01)";
{
std::string copy = fn5;
if( copy.size() % 2 )
{
copy.push_back( ' ' );
}
gdcm::DataElement de( at.GetTag() );
de.SetByteValue( copy.c_str(), (uint32_t)copy.size() );
at.SetFromDataElement( de );
n = at.GetNumberOfValues();
if( n != 4 ) return 1;
for( unsigned int i = 0; i < n; ++i)
{
gdcm::CodeString cs = at.GetValue( i );
if( !cs.IsValid() )
{
std::cerr << "Invalid CS: " << cs << std::endl;
return 1;
}
}
if( strlen(at.GetValue(2) ) < 8 )
{
return 1;
}
}
{
gdcm::CodeString cs0 = " SUB\\DIR ";
if( cs0.IsValid() ) return 1;
gdcm::CodeString cs1 = " SUBDIR ";
if( !cs1.IsValid() ) return 1;
gdcm::CodeString cs2 = " SUBDIR_0123456789 ";
if( cs2.IsValid() ) return 1;
gdcm::CodeString cs3 = " IMG_0123456789 ";
if( !cs3.IsValid() ) return 1;
gdcm::CodeString cs4 = " IMG_0123456789 ";
if( !cs4.IsValid() ) return 1;
if( !(cs3 == cs4) ) return 1;
if( cs3 != cs4 ) return 1;
gdcm::CodeString cs5 = "IMG";
if( cs5 != "IMG ")
return 1;
}
return 0;
}