diff options
Diffstat (limited to 'qpid/cpp/src/tests')
| -rw-r--r-- | qpid/cpp/src/tests/FieldTable.cpp | 8 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/FieldValue.cpp | 35 |
2 files changed, 22 insertions, 21 deletions
diff --git a/qpid/cpp/src/tests/FieldTable.cpp b/qpid/cpp/src/tests/FieldTable.cpp index 81372d87c5..c040f1d433 100644 --- a/qpid/cpp/src/tests/FieldTable.cpp +++ b/qpid/cpp/src/tests/FieldTable.cpp @@ -176,19 +176,19 @@ QPID_AUTO_TEST_CASE(testFloatAndDouble) Buffer rbuffer(buff, 100); FieldTable a; rbuffer.get(a); - BOOST_CHECK(string("abc") == a.getAsString("string")); - BOOST_CHECK(5672 == a.getAsInt("int")); + BOOST_CHECK_EQUAL(string("abc"), a.getAsString("string")); + BOOST_CHECK_EQUAL(5672, a.getAsInt("int")); float f2; BOOST_CHECK(!a.getFloat("string", f2)); BOOST_CHECK(!a.getFloat("int", f2)); BOOST_CHECK(a.getFloat("float", f2)); - BOOST_CHECK(f2 == f); + BOOST_CHECK_EQUAL(f2, f); double d2; BOOST_CHECK(!a.getDouble("string", d2)); BOOST_CHECK(!a.getDouble("int", d2)); BOOST_CHECK(a.getDouble("double", d2)); - BOOST_CHECK(d2 == d); + BOOST_CHECK_EQUAL(d2, d); } } diff --git a/qpid/cpp/src/tests/FieldValue.cpp b/qpid/cpp/src/tests/FieldValue.cpp index 3e2a761c38..2182a43e35 100644 --- a/qpid/cpp/src/tests/FieldValue.cpp +++ b/qpid/cpp/src/tests/FieldValue.cpp @@ -53,22 +53,15 @@ QPID_AUTO_TEST_CASE(testIntegerValueEquals) BOOST_CHECK(IntegerValue(5) != i); BOOST_CHECK(i != s); BOOST_CHECK(i.convertsTo<std::string>() == false); - BOOST_CHECK(i.convertsTo<float>() == false); + BOOST_CHECK(i.convertsTo<float>() == true); BOOST_CHECK(i.convertsTo<int>() == true); BOOST_CHECK_THROW(i.get<std::string>(), InvalidConversionException); - - //FIXME aconway 2015-04-03: fails - //BOOST_CHECK_THROW(i.get<float>(), InvalidConversionException); + BOOST_CHECK_EQUAL(i.get<float>(), 42.0); } QPID_AUTO_TEST_CASE(testFloatValueEquals) { - // FIXME aconway 2015-04-03: The commented out tests are bug QPID-6470. - // The basic problems are: - // - allows meaningles conversion between int and float types. - // - does not allow expected conversion between float and double types. - - // BOOST_CHECK(f.convertsTo<float>() == true); + BOOST_CHECK(f.convertsTo<float>() == true); BOOST_CHECK_EQUAL(FloatValue(42.42), f); BOOST_CHECK_CLOSE(f.get<float>(), 42.42, 0.001); // Check twice, regression test for QPID-6470 where the value was corrupted during get. @@ -76,20 +69,28 @@ QPID_AUTO_TEST_CASE(testFloatValueEquals) BOOST_CHECK_CLOSE(f.get<float>(), 42.42, 0.001); // Float to double conversion - // BOOST_CHECK(f.convertsTo<double>() == true); - // BOOST_CHECK_CLOSE(f.get<double>(), 42.42, 0.001); + BOOST_CHECK(f.convertsTo<double>() == true); + BOOST_CHECK_CLOSE(f.get<double>(), 42.42, 0.001); // Double value + BOOST_CHECK(f.convertsTo<float>() == true); + BOOST_CHECK(f.convertsTo<double>() == true); + BOOST_CHECK_CLOSE(df.get<float>(), 123.123, 0.001); BOOST_CHECK_CLOSE(df.get<double>(), 123.123, 0.001); - // BOOST_CHECK(f.convertsTo<float>() == true); - // BOOST_CHECK(f.convertsTo<double>() == true); - // BOOST_CHECK_CLOSE(df.get<float>(), 123.123, 0.001); // Invalid conversions should fail. BOOST_CHECK(!f.convertsTo<std::string>()); - // BOOST_CHECK(!f.convertsTo<int>()); + BOOST_CHECK(!f.convertsTo<int>()); BOOST_CHECK_THROW(f.get<std::string>(), InvalidConversionException); - // BOOST_CHECK_THROW(f.get<int>(), InvalidConversionException); + BOOST_CHECK_THROW(f.get<int>(), InvalidConversionException); + + // getFloatingPointValue: check twice, regression test for QPID-6470 + BOOST_CHECK_CLOSE((f.getFloatingPointValue<float,sizeof(float)>()), 42.42, 0.001); + BOOST_CHECK_CLOSE((f.getFloatingPointValue<float,sizeof(float)>()), 42.42, 0.001); + BOOST_CHECK_CLOSE((df.getFloatingPointValue<double,sizeof(double)>()), 123.123, 0.001); + // getFloatingPointValue should *not* convert float/double, require exact type. + BOOST_CHECK_THROW((f.getFloatingPointValue<double,sizeof(double)>()), InvalidConversionException); + BOOST_CHECK_THROW((df.getFloatingPointValue<float,sizeof(float)>()), InvalidConversionException); } QPID_AUTO_TEST_SUITE_END() |
