]> granicus.if.org Git - icu/commitdiff
merge tryingdouble branch
authorYounies Mahmoud <younies.mahmoud@gmail.com>
Thu, 19 Mar 2020 14:14:55 +0000 (15:14 +0100)
committerYounies Mahmoud <younies.mahmoud@gmail.com>
Thu, 19 Mar 2020 14:14:55 +0000 (15:14 +0100)
1  2 
icu4c/source/test/intltest/unitstest.cpp

index d8b8e54d18df1f73f05ba862697cfee3fee7a10c,128bb172c0f340ddcc24a756fe215b4927f67b80..5862097379a6346a88d6b74534391cbf8765a3cc
@@@ -786,46 -783,11 +788,51 @@@ void UnitsTest::testPreferences() 
      }
  }
  
 +void UnitsTest::testGetUnitsData() {
 +    struct {
 +        const char *outputRegion;
 +        const char *usage;
 +        const char *inputUnit;
 +    } testCases[]{
 +        {"US", "fluid", "centiliter"},
 +        {"BZ", "weather", "celsius"},
 +        {"ZA", "road", "yard"},
 +        {"XZ", "zz_nonexistant", "dekagram"},
 +    };
 +    for (const auto &t : testCases) {
 +        logln("test case: %s %s %s\n", t.outputRegion, t.usage, t.inputUnit);
 +        // UErrorCode status = U_ZERO_ERROR;
 +        IcuTestErrorCode status(*this, "testGetUnitsData");
 +        MeasureUnit inputUnit = MeasureUnit::forIdentifier(t.inputUnit, status);
 +
 +        CharString category;
 +        MeasureUnit baseUnit;
 +        MaybeStackVector<ConversionRateInfo> conversionInfo;
 +        MaybeStackVector<UnitPreference> unitPreferences;
 +        getUnitsData(t.outputRegion, t.usage, inputUnit, category, baseUnit, conversionInfo,
 +                     unitPreferences, status);
 +        if (status.errIfFailureAndReset("getUnitsData(\"%s\", \"%s\", \"%s\", ...)", t.outputRegion, t.usage, t.inputUnit)) {
 +            continue;
 +        }
 +        logln("category: \"%s\", baseUnit: \"%s\"", category.data(), baseUnit.getIdentifier());
 +        for (int i=0; i < conversionInfo.length(); i++) {
 +            ConversionRateInfo *cri;
 +            cri = conversionInfo[i];
 +            logln("conversionInfo %d: source=\"%s\", target=\"%s\", factor=\"%s\", offset=\"%s\"", i,
 +                  cri->source.data(), cri->target.data(), cri->factor.data(), cri->offset.data());
 +        }
 +        for (int i=0; i < unitPreferences.length(); i++) {
 +            UnitPreference *up;
 +            up = unitPreferences[i];
 +            logln("unitPreference %d: \"%s\", geq=%f, skeleton=\"%s\"", i, up->unit.data(),
 +                  up->geq, up->skeleton.data());
 +        }
 +    }
+ /**
+  * Tests different return statuses depending on the input.
+  */
+ void UnitsTest::testStatus() {
  }
  
  #endif /* #if !UCONFIG_NO_FORMATTING */