mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-28 19:51:58 +01:00
replaced stream-based number formatting
embedded a portion of double-conversion library (http://code.google.com/p/double-conversion/)and replaced stream-based number formatting
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
#include "CppUnit/TestCaller.h"
|
||||
#include "CppUnit/TestSuite.h"
|
||||
#include "Poco/NumberFormatter.h"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
using Poco::NumberFormatter;
|
||||
using Poco::Int64;
|
||||
@@ -89,17 +89,6 @@ void NumberFormatterTest::testFormat()
|
||||
{
|
||||
assert (NumberFormatter::format((void*) 0x12345678) == "0000000012345678");
|
||||
}
|
||||
|
||||
assert(NumberFormatter::format(12.25) == "12.25");
|
||||
assert(NumberFormatter::format(12.25, 4) == "12.2500");
|
||||
assert(NumberFormatter::format(12.25, 8, 4) == " 12.2500");
|
||||
|
||||
assert(NumberFormatter::format(true, NumberFormatter::FMT_TRUE_FALSE) == "true");
|
||||
assert(NumberFormatter::format(false, NumberFormatter::FMT_TRUE_FALSE) == "false");
|
||||
assert(NumberFormatter::format(true, NumberFormatter::FMT_YES_NO) == "yes");
|
||||
assert(NumberFormatter::format(false, NumberFormatter::FMT_YES_NO) == "no");
|
||||
assert(NumberFormatter::format(true, NumberFormatter::FMT_ON_OFF) == "on");
|
||||
assert(NumberFormatter::format(false, NumberFormatter::FMT_ON_OFF) == "off");
|
||||
}
|
||||
|
||||
|
||||
@@ -119,6 +108,17 @@ void NumberFormatterTest::testFormat0()
|
||||
}
|
||||
|
||||
|
||||
void NumberFormatterTest::testFormatBool()
|
||||
{
|
||||
assert(NumberFormatter::format(true, NumberFormatter::FMT_TRUE_FALSE) == "true");
|
||||
assert(NumberFormatter::format(false, NumberFormatter::FMT_TRUE_FALSE) == "false");
|
||||
assert(NumberFormatter::format(true, NumberFormatter::FMT_YES_NO) == "yes");
|
||||
assert(NumberFormatter::format(false, NumberFormatter::FMT_YES_NO) == "no");
|
||||
assert(NumberFormatter::format(true, NumberFormatter::FMT_ON_OFF) == "on");
|
||||
assert(NumberFormatter::format(false, NumberFormatter::FMT_ON_OFF) == "off");
|
||||
}
|
||||
|
||||
|
||||
void NumberFormatterTest::testFormatHex()
|
||||
{
|
||||
assert (NumberFormatter::formatHex(0x12) == "12");
|
||||
@@ -201,15 +201,37 @@ void NumberFormatterTest::testFormatHex()
|
||||
|
||||
void NumberFormatterTest::testFormatFloat()
|
||||
{
|
||||
std::string s(NumberFormatter::format(1.0f));
|
||||
assert(s == "1");
|
||||
s = NumberFormatter::format(0.1f);
|
||||
assert(s == "0.1");
|
||||
assert (NumberFormatter::format(1.0f) == "1");
|
||||
assert (NumberFormatter::format(1.23f) == "1.23");
|
||||
assert (NumberFormatter::format(-1.23f) == "-1.23");
|
||||
assert (NumberFormatter::format(0.1f) == "0.1");
|
||||
assert (NumberFormatter::format(-0.1f) == "-0.1");
|
||||
assert (NumberFormatter::format(1.23) == "1.23");
|
||||
assert (NumberFormatter::format(-1.23) == "-1.23");
|
||||
assert (NumberFormatter::format(1.0) == "1");
|
||||
assert (NumberFormatter::format(-1.0) == "-1");
|
||||
assert (NumberFormatter::format(0.1) == "0.1");
|
||||
assert (NumberFormatter::format(-0.1) == "-0.1");
|
||||
|
||||
s = NumberFormatter::format(1.0);
|
||||
assert(s == "1");
|
||||
s = NumberFormatter::format(0.1);
|
||||
assert(s == "0.1");
|
||||
int decDigits = std::numeric_limits<double>::digits10;
|
||||
std::ostringstream ostr;
|
||||
ostr << "0." << std::string(decDigits - 1, '0') << '1';
|
||||
assert(NumberFormatter::format(1 / std::pow(10., decDigits)) == ostr.str());
|
||||
|
||||
ostr.str("");
|
||||
ostr << "1e-" << decDigits + 1;
|
||||
std::string str (ostr.str());
|
||||
std::string str1 (NumberFormatter::format(1 / std::pow(10., decDigits + 1)));
|
||||
assert(NumberFormatter::format(1 / std::pow(10., decDigits + 1)) == ostr.str());
|
||||
|
||||
assert(NumberFormatter::format(12.25) == "12.25");
|
||||
assert(NumberFormatter::format(12.25, 4) == "12.2500");
|
||||
assert(NumberFormatter::format(12.25, 8, 4) == " 12.2500");
|
||||
|
||||
assert(NumberFormatter::format(-12.25) == "-12.25");
|
||||
assert(NumberFormatter::format(-12.25, 4) == "-12.2500");
|
||||
assert(NumberFormatter::format(-12.25, 10, 4) == " -12.2500");
|
||||
assert(NumberFormatter::format(-12.25, 10, 2) == " -12.25");
|
||||
}
|
||||
|
||||
|
||||
@@ -229,6 +251,7 @@ CppUnit::Test* NumberFormatterTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, NumberFormatterTest, testFormat);
|
||||
CppUnit_addTest(pSuite, NumberFormatterTest, testFormat0);
|
||||
CppUnit_addTest(pSuite, NumberFormatterTest, testFormatBool);
|
||||
CppUnit_addTest(pSuite, NumberFormatterTest, testFormatHex);
|
||||
CppUnit_addTest(pSuite, NumberFormatterTest, testFormatFloat);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user