diff options
Diffstat (limited to 'Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp index c65a5e03229..ca41e3b0d03 100644 --- a/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp +++ b/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp @@ -325,6 +325,12 @@ void UnitsTest::testConverter() { // Fuel Consumption {"cubic-meter-per-meter", "mile-per-gallon", 2.1383143939394E-6, 1.1}, {"cubic-meter-per-meter", "mile-per-gallon", 2.6134953703704E-6, 0.9}, + {"liter-per-100-kilometer", "mile-per-gallon", 6.6, 35.6386}, + {"liter-per-100-kilometer", "mile-per-gallon", 0, uprv_getInfinity()}, + {"mile-per-gallon", "liter-per-100-kilometer", 0, uprv_getInfinity()}, + {"mile-per-gallon", "liter-per-100-kilometer", uprv_getInfinity(), 0}, + // We skip testing -Inf, because the inverse conversion loses the sign: + // {"mile-per-gallon", "liter-per-100-kilometer", -uprv_getInfinity(), 0}, // Test Aliases // Alias is just another name to the same unit. Therefore, converting @@ -348,54 +354,42 @@ void UnitsTest::testConverter() { continue; } + double maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue); + if (testCase.expectedValue == 0) { + maxDelta = 1e-12; + } + double inverseMaxDelta = 1e-6 * uprv_fabs(testCase.inputValue); + if (testCase.inputValue == 0) { + inverseMaxDelta = 1e-12; + } + ConversionRates conversionRates(status); if (status.errIfFailureAndReset("conversionRates(status)")) { continue; } + UnitsConverter converter(source, target, conversionRates, status); if (status.errIfFailureAndReset("UnitsConverter(<%s>, <%s>, ...)", testCase.source, testCase.target)) { continue; } - - double maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue); - if (testCase.expectedValue == 0) { - maxDelta = 1e-12; - } assertEqualsNear(UnicodeString("testConverter: ") + testCase.source + " to " + testCase.target, testCase.expectedValue, converter.convert(testCase.inputValue), maxDelta); - - maxDelta = 1e-6 * uprv_fabs(testCase.inputValue); - if (testCase.inputValue == 0) { - maxDelta = 1e-12; - } assertEqualsNear( UnicodeString("testConverter inverse: ") + testCase.target + " back to " + testCase.source, - testCase.inputValue, converter.convertInverse(testCase.expectedValue), maxDelta); + testCase.inputValue, converter.convertInverse(testCase.expectedValue), inverseMaxDelta); - - // TODO: Test UnitsConverter created using CLDR separately. // Test UnitsConverter created by CLDR unit identifiers UnitsConverter converter2(testCase.source, testCase.target, status); if (status.errIfFailureAndReset("UnitsConverter(<%s>, <%s>, ...)", testCase.source, testCase.target)) { continue; } - - maxDelta = 1e-6 * uprv_fabs(testCase.expectedValue); - if (testCase.expectedValue == 0) { - maxDelta = 1e-12; - } assertEqualsNear(UnicodeString("testConverter2: ") + testCase.source + " to " + testCase.target, testCase.expectedValue, converter2.convert(testCase.inputValue), maxDelta); - - maxDelta = 1e-6 * uprv_fabs(testCase.inputValue); - if (testCase.inputValue == 0) { - maxDelta = 1e-12; - } assertEqualsNear( UnicodeString("testConverter2 inverse: ") + testCase.target + " back to " + testCase.source, - testCase.inputValue, converter2.convertInverse(testCase.expectedValue), maxDelta); + testCase.inputValue, converter2.convertInverse(testCase.expectedValue), inverseMaxDelta); } } @@ -647,6 +641,16 @@ void UnitsTest::testComplexUnitsConverter() { Measure(2.1, MeasureUnit::createMeter(status), status)}, 2, 0.001}, + + // Negative numbers + {"Negative number conversion", + "yard", + "mile-and-yard", + -1800, + {Measure(-1, MeasureUnit::createMile(status), status), + Measure(-40, MeasureUnit::createYard(status), status)}, + 2, + 1e-10}, }; status.assertSuccess(); @@ -694,11 +698,7 @@ void UnitsTest::testComplexUnitsConverter() { ComplexUnitsConverter converter2( testCase.input, testCase.output, status); testATestCase(converter2, "ComplexUnitsConverter #1 " , testCase); } - - status.assertSuccess(); - - // TODO(icu-units#63): test negative numbers! } void UnitsTest::testComplexUnitsConverterSorting() { |