]> granicus.if.org Git - icu/commitdiff
Add tests for SI prefixes
authorYounies <younies.mahmoud@gmail.com>
Fri, 17 Jan 2020 10:52:56 +0000 (11:52 +0100)
committerYounies <younies.mahmoud@gmail.com>
Fri, 17 Jan 2020 10:52:56 +0000 (11:52 +0100)
icu4c/source/test/intltest/unitstest.cpp

index cd99a2dc8275b9e22ccdba55279ccacaa059ae7d..59f4176d4222f92a2f6d9235b4840170e4d562a1 100644 (file)
 
 #include "intltest.h"
 
-
-class UnitsTest : public IntlTest {
+class UnitsTest : public IntlTest
+{
 public:
     UnitsTest() {}
 
-    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL);
+    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
 
     void testBasic();
     void testMass();
-    void testTemprature();
+    void testTemperature();
+    void testSiPrefixes();
 };
 
-extern IntlTest *createUnitsTest() {
+extern IntlTest *createUnitsTest()
+{
     return new UnitsTest();
 }
 
-void UnitsTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
-    if(exec) {
+void UnitsTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/)
+{
+    if (exec)
+    {
         logln("TestSuite UnitsTest: ");
     }
     TESTCASE_AUTO_BEGIN;
     TESTCASE_AUTO(testBasic);
     TESTCASE_AUTO(testMass);
     TESTCASE_AUTO(testTemperature);
+    TESTCASE_AUTO(testSiPrefixes);
     TESTCASE_AUTO_END;
 }
 
 // Just for testing quick conversion ability.
-double testConvert(const char16_t* source , const char16_t* target , double input) {
-    if (source == u"meter" && target ==u"foot" && input == 1.0)
+double testConvert(const char16_t *source, const char16_t *target, double input)
+{
+    if (source == u"meter" && target == u"foot" && input == 1.0)
         return 3.28084;
 
-    if (source == u"kilometer" && target ==u"foot" && input == 1.0)
+    if (source == u"kilometer" && target == u"foot" && input == 1.0)
         return 328.084;
 
-    return -1;    
+    return -1;
 }
 
-void UnitsTest::testBasic() {
+void UnitsTest::testBasic()
+{
     IcuTestErrorCode status(*this, "Units testBasic");
 
-    // Basic Test Cases
-    struct TestCase {
-        const char16_t* source;
-        const char16_t* target;
+    // Test Cases
+    struct TestCase
+    {
+        const char16_t *source;
+        const char16_t *target;
+        const double inputValue;
+        const double expectedValue;
+    } testCases[]{
+        {u"meter", u"foot", 1.0, 3.28084},
+        {u"kilometer", u"foot", 1.0, 328.084}};
+
+    for (const auto &testCase : testCases)
+    {
+        assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
+    }
+}
+
+void UnitsTest::testSiPrefixes()
+{
+    IcuTestErrorCode status(*this, "Units testSiPrefixes");
+    // Test Cases
+    struct TestCase
+    {
+        const char16_t *source;
+        const char16_t *target;
         const double inputValue;
         const double expectedValue;
-        } testCases[]
-        {
-            {u"meter" , u"foot" , 1.0 , 3.28084 },
-            {u"kilometer" , u"foot" , 1.0 , 328.084 }
-        };
-
-        for (const auto& testCase : testCases) 
-        {
-            assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
-        }
+    } testCases[]{
+        {u"gram", u"kilogram", 1.0, 0.001},
+        {u"milligram", u"kilogram", 1.0, 0.000001},
+        {u"microgram", u"kilogram", 1.0, 0.000000001},
+        {u"megawatt", u"watt", 1, 1000000},
+        {u"megawatt", u"kilowatt", 1.0, 1000},
+        {u"gigabyte", u"byte", 1, 1000000000}};
+
+    for (const auto &testCase : testCases)
+    {
+        assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
+    }
 }
 
-void UnitsTest::testMass() {
+void UnitsTest::testMass()
+{
     IcuTestErrorCode status(*this, "Units testMass");
 
     // Test Cases
-    struct TestCase 
+    struct TestCase
     {
-        const char16_tsource;
-        const char16_ttarget;
+        const char16_t *source;
+        const char16_t *target;
         const double inputValue;
         const double expectedValue;
-    } testCases[] 
-        {
-            {u"gram", u"kilogram" , 1.0 , 0.001 },
-            {u"pound", u"kilogram" , 1.0 , 0.453592 },
-            {u"pound", u"kilogram" , 2.0 , 0.907185 },
-            {u"ounce", u"pound" , 16.0 , 1.0 },
-            {u"ounce", u"kilogram" , 16.0 , 0.453592 },
-            {u"ton" , u"pound" , 1.0 , 2000 },
-            {u"stone" , u"pound" , 1.0 , 14 },
-            {u"stone" , u"kilogram" , 1.0 , 6.35029 }
-        };
-
-        for (const auto& testCase : testCases) 
-        {
-            assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
-        }
+    } testCases[]{
+        {u"gram", u"kilogram", 1.0, 0.001},
+        {u"pound", u"kilogram", 1.0, 0.453592},
+        {u"pound", u"kilogram", 2.0, 0.907185},
+        {u"ounce", u"pound", 16.0, 1.0},
+        {u"ounce", u"kilogram", 16.0, 0.453592},
+        {u"ton", u"pound", 1.0, 2000},
+        {u"stone", u"pound", 1.0, 14},
+        {u"stone", u"kilogram", 1.0, 6.35029}};
+
+    for (const auto &testCase : testCases)
+    {
+        assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
+    }
 }
 
-void UnitsTest::testTemperature() {
+void UnitsTest::testTemperature()
+{
     IcuTestErrorCode status(*this, "Units testTemperature");
     // Test Cases
-    struct TestCase 
+    struct TestCase
     {
-        const char16_tsource;
-        const char16_ttarget;
+        const char16_t *source;
+        const char16_t *target;
         const double inputValue;
         const double expectedValue;
-    } testCases[] 
-        {
-            {u"celsius", u"fahrenheit" , 0.0 , 32.0 },
-            {u"celsius", u"fahrenheit" , 10.0 , 50.0 },
-            {u"fahrenheit", u"celsius" , 32.0 , 0.0 },
-            {u"fahrenheit", u"celsius" , 89.6 , 32 },
-            {u"kelvin", u"fahrenheit" , 0.0 , -459.67 },
-            {u"kelvin", u"fahrenheit" , 300 , 80.33 },
-            {u"kelvin", u"celsius" , 0.0 , -273.15 },
-            {u"kelvin", u"celsius" , 300.0 , 26.85 },
-        };
-
-        for (const auto& testCase : testCases) 
-        {
-            assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
-        }
+    } testCases[]{
+        {u"celsius", u"fahrenheit", 0.0, 32.0},
+        {u"celsius", u"fahrenheit", 10.0, 50.0},
+        {u"fahrenheit", u"celsius", 32.0, 0.0},
+        {u"fahrenheit", u"celsius", 89.6, 32},
+        {u"kelvin", u"fahrenheit", 0.0, -459.67},
+        {u"kelvin", u"fahrenheit", 300, 80.33},
+        {u"kelvin", u"celsius", 0.0, -273.15},
+        {u"kelvin", u"celsius", 300.0, 26.85}};
+
+    for (const auto &testCase : testCases)
+    {
+        assertEquals("test convert", testConvert(testCase.source, testCase.target, testCase.inputValue), testCase.expectedValue);
+    }
 }
 
-
 #endif /* #if !UCONFIG_NO_FORMATTING */