using std::string;
-BOOST_AUTO_TEST_CASE (raw_convert_test)
+
+void
+do_raw_convert_test()
+{
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>('A'), "A");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>('Z'), "Z");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<unsigned short int>(42)), "42");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<int>(-6)), "-6");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<unsigned int>(12)), "12");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<long>(-1061)), "-1061");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<unsigned long>(9913)), "9913");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<long long>(-139913)), "-139913");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<unsigned long long>(239913)), "239913");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>("hello world"), "hello world");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(string("hello world")), "hello world");
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(.34), "0.34");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(-.34), "-0.34");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<float>(.34), 6), "0.34");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(static_cast<float>(-.34), 6), "-0.34");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(0.157123125), "0.157123125");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(0.157123125, 4), "0.1571");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(1e50), "1e+50");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(1e-50), "1e-50");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(1.5e12), "1500000000000");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(0.0086), "0.0086");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(0.00086), "0.00086");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(0.000086), "8.6e-05");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>(0.000086, 10, true), "0.0000860000");
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<unsigned char>(string("92")), static_cast<unsigned char>(92));
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<unsigned short int>(string("912")), 912);
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<int>("42"), 42);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<int>("42.3"), 42);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<int>("42.7"), 42);
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<long>(string("42")), 42);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<long>(string("42.3")), 42);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<long>(string("42.7")), 42);
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<double>("42"), 42);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<double>("42.3"), 42.3);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<double>("42.7"), 42.7);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<double>("4e8"), 4e8);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<double>("9.1e9"), 9.1e9);
+ BOOST_CHECK_EQUAL(dcp::raw_convert<double>("0.005"), 0.005);
+
+ BOOST_CHECK_CLOSE(dcp::raw_convert<float>("42"), 42, 0.001);
+ BOOST_CHECK_CLOSE(dcp::raw_convert<float>("42.3"), 42.3, 0.001);
+ BOOST_CHECK_CLOSE(dcp::raw_convert<float>("42.7"), 42.7, 0.001);
+ BOOST_CHECK_CLOSE(dcp::raw_convert<float>("4e8"), 4e8, 0.001);
+ BOOST_CHECK_CLOSE(dcp::raw_convert<float>("9.1e9"), 9.1e9, 0.001);
+ BOOST_CHECK_CLOSE(dcp::raw_convert<float>("0.005"), 0.005, 0.001);
+
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>("foo"), "foo");
+ BOOST_CHECK_EQUAL(dcp::raw_convert<string>("foo bar"), "foo bar");
+}
+
+
+BOOST_AUTO_TEST_CASE (raw_convert_test_de)
{
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (1), "1");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (12), "12");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (12.3), "12.3");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (12.34), "12.34");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (.34), "0.34");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (-.34), "-0.34");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (0.157123125), "0.157123125");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (0.157123125, 4), "0.1571");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (1e50), "1e+50");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (1e-50), "1e-50");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (1.5e12), "1500000000000");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (0.0086), "0.0086");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (0.00086), "0.00086");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (0.000086), "8.6e-05");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> (0.000086, 10, true), "0.0000860000");
-
- BOOST_CHECK_EQUAL (dcp::raw_convert<int> ("42"), 42);
- BOOST_CHECK_EQUAL (dcp::raw_convert<int> ("42.3"), 42);
- BOOST_CHECK_EQUAL (dcp::raw_convert<int> ("42.7"), 42);
-
- BOOST_CHECK_EQUAL (dcp::raw_convert<double> ("42"), 42);
- BOOST_CHECK_EQUAL (dcp::raw_convert<double> ("42.3"), 42.3);
- BOOST_CHECK_EQUAL (dcp::raw_convert<double> ("42.7"), 42.7);
- BOOST_CHECK_EQUAL (dcp::raw_convert<double> ("4e8"), 4e8);
- BOOST_CHECK_EQUAL (dcp::raw_convert<double> ("9.1e9"), 9.1e9);
- BOOST_CHECK_EQUAL (dcp::raw_convert<double> ("0.005"), 0.005);
-
- BOOST_CHECK_CLOSE (dcp::raw_convert<float> ("42"), 42, 0.001);
- BOOST_CHECK_CLOSE (dcp::raw_convert<float> ("42.3"), 42.3, 0.001);
- BOOST_CHECK_CLOSE (dcp::raw_convert<float> ("42.7"), 42.7, 0.001);
- BOOST_CHECK_CLOSE (dcp::raw_convert<float> ("4e8"), 4e8, 0.001);
- BOOST_CHECK_CLOSE (dcp::raw_convert<float> ("9.1e9"), 9.1e9, 0.001);
- BOOST_CHECK_CLOSE (dcp::raw_convert<float> ("0.005"), 0.005, 0.001);
-
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> ("foo"), "foo");
- BOOST_CHECK_EQUAL (dcp::raw_convert<string> ("foo bar"), "foo bar");
+ setlocale (LC_ALL, "de_DE.UTF-8");
+ BOOST_CHECK_EQUAL (localeconv()->decimal_point, ",");
+ do_raw_convert_test ();
}
+
+
+BOOST_AUTO_TEST_CASE (raw_convert_test_en)
+{
+ setlocale (LC_ALL, "en_US.UTF-8");
+ BOOST_CHECK_EQUAL (localeconv()->decimal_point, ".");
+ do_raw_convert_test ();
+}
+