LocaleNumberTest.C 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /*
  2. * Copyright (C) 2011 Emweb bvba, Kessel-Lo, Belgium.
  3. *
  4. * See the LICENSE file for terms of use.
  5. */
  6. #include <boost/test/unit_test.hpp>
  7. #include <boost/lexical_cast.hpp>
  8. #include <Wt/WLocale>
  9. using namespace Wt;
  10. BOOST_AUTO_TEST_CASE( formatCLocale )
  11. {
  12. double d = 12345678.2345;
  13. WLocale l;
  14. WString s = l.toString(d);
  15. BOOST_REQUIRE(s == "12345678.2345");
  16. }
  17. BOOST_AUTO_TEST_CASE( formatGrouping )
  18. {
  19. double d = 12345678.2345;
  20. WLocale l;
  21. l.setGroupSeparator(",");
  22. WString s = l.toString(d);
  23. BOOST_REQUIRE(s == "12,345,678.2345");
  24. s = l.toString(d / 10);
  25. BOOST_REQUIRE(s == "1,234,567.82345");
  26. BOOST_REQUIRE((l.toDouble(s) - d / 10) < 1E-6);
  27. s = l.toString(d / 100);
  28. BOOST_REQUIRE(s == "123,456.782345");
  29. BOOST_REQUIRE((l.toDouble(s) - d / 100) < 1E-7);
  30. s = l.toString(d / 1E30);
  31. BOOST_REQUIRE(s == boost::lexical_cast<std::string>(d / 1E30));
  32. s = l.toString(d * 1E30);
  33. #ifdef WT_WIN32
  34. BOOST_REQUIRE(s == "1.23456782345e+037");
  35. #else
  36. BOOST_REQUIRE(s == "1.23456782345e+37");
  37. #endif
  38. s = l.toString(d / -1E30);
  39. BOOST_REQUIRE(s == boost::lexical_cast<std::string>(d / -1E30));
  40. s = l.toString(d * -1E30);
  41. #ifdef WT_WIN32
  42. BOOST_REQUIRE(s == "-1.23456782345e+037");
  43. #else
  44. BOOST_REQUIRE(s == "-1.23456782345e+37");
  45. #endif
  46. }
  47. BOOST_AUTO_TEST_CASE( formatNegGrouping )
  48. {
  49. double d = -12345678.2345;
  50. WLocale l;
  51. l.setGroupSeparator(",");
  52. WString s = l.toString(d);
  53. BOOST_REQUIRE(s == "-12,345,678.2345");
  54. s = l.toString(d / 10);
  55. BOOST_REQUIRE(s == "-1,234,567.82345");
  56. BOOST_REQUIRE((l.toDouble(s) - d / 10) < 1E-6);
  57. s = l.toString(d / 100);
  58. BOOST_REQUIRE(s == "-123,456.782345");
  59. BOOST_REQUIRE((l.toDouble(s) - d / 100) < 1E-7);
  60. s = l.toString(d / 1E30);
  61. BOOST_REQUIRE(s == boost::lexical_cast<std::string>(d / 1E30));
  62. s = l.toString(d * 1E30);
  63. #ifdef WT_WIN32
  64. BOOST_REQUIRE(s == "-1.23456782345e+037");
  65. #else
  66. BOOST_REQUIRE(s == "-1.23456782345e+37");
  67. #endif
  68. s = l.toString(d / -1E30);
  69. BOOST_REQUIRE(s == boost::lexical_cast<std::string>(d / -1E30));
  70. s = l.toString(d * -1E30);
  71. #ifdef WT_WIN32
  72. BOOST_REQUIRE(s == "1.23456782345e+037");
  73. #else
  74. BOOST_REQUIRE(s == "1.23456782345e+37");
  75. #endif
  76. }