38 CPPUNIT_TEST_SUITE(mitkFloatToStringTestSuite);
43 CPPUNIT_TEST_SUITE_END();
46 template <
typename DATATYPE>
47 void ConfirmNumberToString(DATATYPE number,
const std::string &s)
50 CPPUNIT_ASSERT_EQUAL(boost::lexical_cast<std::string>(number), s);
53 template <
typename DATATYPE>
54 void ConfirmStringToNumber(
const std::string &s, DATATYPE number)
57 CPPUNIT_ASSERT_EQUAL(number, boost::lexical_cast<DATATYPE>(s));
60 template <
typename DATATYPE>
61 void ConfirmStringValues()
66 CPPUNIT_ASSERT_MESSAGE(
"nan==nan must be false", !(nan == nan));
68 CPPUNIT_ASSERT_MESSAGE(
"NAN==NAN must be false", !(nan == nan));
71 CPPUNIT_ASSERT_EQUAL(std::string(
"nan"), s_nan);
73 ConfirmStringToNumber(
"inf", std::numeric_limits<DATATYPE>::infinity());
74 ConfirmStringToNumber(
"INF", std::numeric_limits<DATATYPE>::infinity());
75 ConfirmStringToNumber(
"infinity", std::numeric_limits<DATATYPE>::infinity());
76 ConfirmStringToNumber(
"INFINITY", std::numeric_limits<DATATYPE>::infinity());
78 ConfirmStringToNumber(
"-inf", -std::numeric_limits<DATATYPE>::infinity());
79 ConfirmStringToNumber(
"-INF", -std::numeric_limits<DATATYPE>::infinity());
80 ConfirmStringToNumber(
"-infinity", -std::numeric_limits<DATATYPE>::infinity());
81 ConfirmStringToNumber(
"-INFINITY", -std::numeric_limits<DATATYPE>::infinity());
83 ConfirmNumberToString(std::numeric_limits<DATATYPE>::infinity(),
"inf");
84 ConfirmNumberToString(-std::numeric_limits<DATATYPE>::infinity(),
"-inf");
87 template <
typename DATATYPE>
88 void CheckRoundTrip(DATATYPE number, DATATYPE tolerance)
93 CPPUNIT_ASSERT_MESSAGE(std::string(
"Must not parse string ") + s +
" as NaN", number2 == number2);
96 CPPUNIT_ASSERT_EQUAL(number, number2);
100 CPPUNIT_ASSERT(
mitk::Equal(number, number2, tolerance));
104 template <
typename DATATYPE>
105 void CheckRoundTrip(
const std::string &input)
116 template <
typename DATATYPE>
117 void TestConversions()
120 CheckRoundTrip<DATATYPE>(std::numeric_limits<DATATYPE>::infinity(), 0.0);
121 CheckRoundTrip<DATATYPE>(-std::numeric_limits<DATATYPE>::infinity(), 0.0);
123 CheckRoundTrip<DATATYPE>(std::numeric_limits<DATATYPE>::denorm_min(),
mitk::eps);
124 CheckRoundTrip<DATATYPE>(std::numeric_limits<DATATYPE>::epsilon(),
mitk::eps);
125 CheckRoundTrip<DATATYPE>(std::numeric_limits<DATATYPE>::lowest(),
mitk::eps);
128 CheckRoundTrip<DATATYPE>(sqrt(2),
mitk::eps);
129 CheckRoundTrip<DATATYPE>(0.000000042,
mitk::eps);
130 CheckRoundTrip<DATATYPE>(422345678.2345678,
mitk::eps);
131 CheckRoundTrip<DATATYPE>(0.0, 0);
132 CheckRoundTrip<DATATYPE>(-0.0, 0);
134 CheckRoundTrip<DATATYPE>(
"1");
135 CheckRoundTrip<DATATYPE>(
"1.1");
136 CheckRoundTrip<DATATYPE>(
"1.12121212");
137 CheckRoundTrip<DATATYPE>(
"1.1e-2");
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
Target lexical_cast(const std::string &arg)
Test fixture for parameterized tests.
MITKNEWMODULE_EXPORT bool Equal(mitk::ExampleDataStructure *leftHandSide, mitk::ExampleDataStructure *rightHandSide, mitk::ScalarType eps, bool verbose)
Returns true if the example data structures are considered equal.
MITKCORE_EXPORT const ScalarType eps