]> granicus.if.org Git - icinga2/commitdiff
Fix unit tests for Convert::ToString
authorGunnar Beutner <gunnar.beutner@netways.de>
Thu, 16 Jun 2016 13:32:29 +0000 (15:32 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Thu, 16 Jun 2016 13:32:29 +0000 (15:32 +0200)
refs #11483

lib/base/convert.cpp
lib/base/value-operators.cpp
test/base-convert.cpp

index 45f6a965b5c0e5976661097f2653f64d3dc529a9..5454a2fc03572b0d63a203efa9904f4a71b7ad14 100644 (file)
@@ -35,6 +35,12 @@ String Convert::ToString(const Value& val)
 
 String Convert::ToString(double val)
 {
+       double integral;
+       double fractional = std::modf(val, &integral);
+
+       if (fractional == 0)
+               return Convert::ToString(static_cast<long>(val));
+
        std::ostringstream msgbuf;
        msgbuf << std::fixed << val;
        return msgbuf.str();
index a658180a6b106d9bfabbcb6780401e955f2f29e7..580fafc73d249256e77555439f381696652f63f5 100644 (file)
@@ -56,19 +56,12 @@ Value::operator double(void) const
 Value::operator String(void) const
 {
        Object *object;
-       double dvalue, integral, fractional;
 
        switch (GetType()) {
                case ValueEmpty:
                        return String();
                case ValueNumber:
-                       dvalue = boost::get<double>(m_Value);
-                       fractional = std::modf(dvalue, &integral);
-
-                       if (fractional != 0)
-                               return Convert::ToString(dvalue);
-                       else
-                               return Convert::ToString(static_cast<long>(dvalue));
+                       return Convert::ToString(boost::get<double>(m_Value));
                case ValueBoolean:
                        if (boost::get<bool>(m_Value))
                                return "true";
index 57da580ef66ee072b4888f1c0b5a078feee5dc1e..16e84da869fded8e63a410aa14f0a054b8907bab 100644 (file)
@@ -46,14 +46,14 @@ BOOST_AUTO_TEST_CASE(todouble)
 BOOST_AUTO_TEST_CASE(tostring)
 {
        BOOST_CHECK(Convert::ToString(7) == "7");
-       BOOST_CHECK(Convert::ToString(7.5) == "7.5");
+       BOOST_CHECK(Convert::ToString(7.5) == "7.500000");
        BOOST_CHECK(Convert::ToString("hello") == "hello");
 
        String str = "hello";
        BOOST_CHECK(Convert::ToString(str) == "hello");
 
        BOOST_CHECK(Convert::ToString(Value(7)) == "7");
-       BOOST_CHECK(Convert::ToString(Value(7.5)) == "7.5");
+       BOOST_CHECK(Convert::ToString(Value(7.5)) == "7.500000");
        BOOST_CHECK(Convert::ToString(Value("hello")) == "hello");
        BOOST_CHECK(Convert::ToString(Value("hello hello")) == "hello hello");
 }