Browse Source

Wrote more tests for string_fromDouble.

David Piuva 3 months ago
parent
commit
d72bc69199
1 changed files with 47 additions and 0 deletions
  1. 47 0
      Source/test/tests/StringTest.cpp

+ 47 - 0
Source/test/tests/StringTest.cpp

@@ -289,6 +289,53 @@ START_TEST(String)
 	serializedNumber = U""; dsr::string_fromDouble(serializedNumber, -123.456789,   4); ASSERT_EQUAL(serializedNumber, U"-123.4568"); // Rounded
 	serializedNumber = U""; dsr::string_fromDouble(serializedNumber, -123.456789,   5); ASSERT_EQUAL(serializedNumber, U"-123.45679"); // Rounded
 	serializedNumber = U""; dsr::string_fromDouble(serializedNumber, -123.456789,   6); ASSERT_EQUAL(serializedNumber, U"-123.456789"); // All decimals included, so no need to round.
+	// Test nearest rounding while returning by value.
+	ASSERT_EQUAL(dsr::string_fromDouble(1.00,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.01,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.02,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.03,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.04,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.049,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0499,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.04999,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.049999,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0499999,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.04999999,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.049999999,   1), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.050000001,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.05000001,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0500001,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.050001,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.05001,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0501,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.051,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.06,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.07,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.08,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.09,   1), U"1.1");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.10,   1), U"1.1");
+	// Not removing trailing zeroes.
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  0, false), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  1, false), U"1.0");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  2, false), U"1.00");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  3, false), U"1.000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  4, false), U"1.0000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  5, false), U"1.00000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  6, false), U"1.000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  7, false), U"1.0000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  8, false), U"1.00000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0,  9, false), U"1.000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 10, false), U"1.0000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 11, false), U"1.00000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 12, false), U"1.000000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 13, false), U"1.0000000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 14, false), U"1.00000000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 15, false), U"1.000000000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 16, false), U"1.0000000000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 17, false), U"1.0000000000000000");
+	ASSERT_EQUAL(dsr::string_fromDouble(1.0, 18, false), U"1.0000000000000000");
+	// Special characters.
+	ASSERT_EQUAL(dsr::string_fromDouble(-1.0,  2, false, U',', U'~'), U"~1,00");
 	// Number parsing
 	ASSERT_EQUAL(string_toInteger(U"0"), 0);
 	ASSERT_EQUAL(string_toInteger(U"-0"), 0);