Program: gdcm
Module: $RCSfile: TestDataEntry.cxx,v $
Language: C++
- Date: $Date: 2005/10/20 15:24:05 $
- Version: $Revision: 1.5 $
+ Date: $Date: 2005/10/23 19:46:17 $
+ Version: $Revision: 1.6 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
=========================================================================*/
#include "gdcmDictEntry.h"
#include "gdcmDataEntry.h"
+#include <math.h>
// ===============================================================
-char data[]="1\\2\\3\\4\\5";
-char fdata[]="1.1\\2.2\\3.3\\4.4\\5.5";
+const char data[] = "1\\2\\3\\4\\5";
+const char fdata[] = "1.1\\2.2\\3.3\\4.4\\5.5";
-short svalue[]={1,2,3,4,5};
-long lvalue[]={1,2,3,4,5};
-float fvalue[]={1.1f,2.2f,3.3f,4.4f,5.5f};
-double dvalue[]={1.1,2.2,3.3,4.4,5.5};
+const int16_t svalue[]={1,2,3,4,5};
+const int32_t lvalue[]={1,2,3,4,5};
+const float fvalue[]={1.1f,2.2f,3.3f,4.4f,5.5f};
+// Temporary hack, assume that long and double are correlated
+#if GDCM_SIZEOF_LONG == 4
+const double dvalue[]={1.1,2.2,3.3,4.4,5.5};
+#else
+const float dvalue[]={1.1,2.2,3.3,4.4,5.5};
+#endif
-unsigned long nbvalue = 5;
+const unsigned long nbvalue = 5;
+const float GDCM_EPS = 1e-6;
/**
* \brief Test the DataEntry object
<< " - Must be: 1" << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
entry->SetString("1\\2");
<< " - Must be: 2" << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
entry->SetString("");
<< " - Must be: 0" << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
std::cout << std::endl;
<< " - Must be: " << strlen(data) + strlen(data)%2 << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( memcmp(entry->GetBinArea(),data,entry->GetLength()) != 0 )
{
<< " Content of bin area is incorrect" << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( memcmp(entry->GetString().c_str(),data,entry->GetLength()) != 0 )
{
<< " - Must be: " << data << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be " << svalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << nbvalue*sizeof(uint16_t) << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( memcmp(entry->GetString().c_str(),data,strlen(data)) != 0 )
{
<< " - Must be: " << data << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << svalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << data << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << svalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << nbvalue*sizeof(uint32_t) << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( memcmp(entry->GetString().c_str(),data,strlen(data)) != 0 )
{
<< " - Must be: " << data << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << lvalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << data << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << lvalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << nbvalue*sizeof(float) << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( memcmp(entry->GetString().c_str(),fdata,strlen(fdata)) != 0 )
{
<< " - Must be: " << fdata << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << fvalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << fdata << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << fvalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << nbvalue*sizeof(double) << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( memcmp(entry->GetString().c_str(),fdata,strlen(fdata)) != 0 )
{
<< " - Must be: " << fdata << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
- if( entry->GetValue(i) != dvalue[i] )
+ // Never compare floating point value...
+ double dif = fabs(entry->GetValue(i) - dvalue[i]);
+ if( dif > GDCM_EPS)
{
std::cout << " Failed" << std::endl
<< " Content of entry's values is incorrect : id " << i << std::endl
<< " - Must be: " << dvalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}
<< " - Must be: " << fdata << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
if( entry->GetValueCount() != nbvalue )
{
<< " - Must be: " << nbvalue << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
for(i=0;i<entry->GetValueCount();i++)
{
<< " - Must be: " << dvalue[i] << std::endl;
dict->Delete();
delete entry;
- return(1);
+ return 1;
}
}