]> granicus.if.org Git - icu/commitdiff
ICU-21502 Adds status checks to test to prevent segementation fault when
authorgnrunge <nrunge@google.com>
Tue, 23 Feb 2021 00:36:19 +0000 (16:36 -0800)
committerNorbert Runge <41129501+gnrunge@users.noreply.github.com>
Tue, 23 Feb 2021 19:48:02 +0000 (11:48 -0800)
test runs with ICU stub data only.

ICU-21502 Review comments worked in.

icu4c/source/test/intltest/units_test.cpp

index 3a8522bf46f659d599ef3815ad0274e575271743..a18e751e4704e3c1130b9d06e0fd4f6874c0d635 100644 (file)
@@ -708,10 +708,26 @@ void UnitsTest::testComplexUnitsConverterSorting() {
 
     for (const auto &testCase : testCases) {
         MeasureUnitImpl inputImpl = MeasureUnitImpl::forIdentifier(testCase.input, status);
+        if (status.errIfFailureAndReset()) {
+            continue;
+        }
         MeasureUnitImpl outputImpl = MeasureUnitImpl::forIdentifier(testCase.output, status);
+        if (status.errIfFailureAndReset()) {
+            continue;
+        }
         ComplexUnitsConverter converter(inputImpl, outputImpl, conversionRates, status);
+        if (status.errIfFailureAndReset()) {
+            continue;
+        }
 
         auto actual = converter.convert(testCase.inputValue, nullptr, status);
+        if (status.errIfFailureAndReset()) {
+            continue;
+        }
+        if (actual.length() < testCase.expectedCount) {
+            errln("converter.convert(...) returned too few Measures");
+            continue;
+        }
 
         for (int i = 0; i < testCase.expectedCount; i++) {
             assertEquals(testCase.msg, testCase.expected[i].getUnit().getIdentifier(),