Increase raw_convert test coverage.
authorCarl Hetherington <cth@carlh.net>
Mon, 21 Mar 2022 22:34:34 +0000 (23:34 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 21 Mar 2022 22:34:34 +0000 (23:34 +0100)
test/raw_convert_test.cc

index c48ccb0c23daabd5448464ee1fb0c1f4beac6555..cfcc93facfe4f058e264ef29305e4f691ff9073f 100644 (file)
 
 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 ();
+}
+