]> granicus.if.org Git - icu/commitdiff
some changes
authorYounies <younies.mahmoud@gmail.com>
Mon, 17 Feb 2020 14:31:28 +0000 (15:31 +0100)
committerYounies <younies.mahmoud@gmail.com>
Mon, 17 Feb 2020 14:31:28 +0000 (15:31 +0100)
icu4c/source/i18n/unitconverter.cpp
icu4c/source/test/intltest/intltest.cpp

index ca8ca5bfca8c240a1b0f31150e93cfb01588d341..45c109c1598606655c4ec9728df985df0f404e9a 100644 (file)
@@ -28,6 +28,12 @@ struct Factor {
     number::impl::DecNum factorNum;
     number::impl::DecNum factorDen;
     number::impl::DecNum offset;
+
+    /*For Debugging*/
+    StringPiece factorNumStr;
+    StringPiece factorDenStr;
+    StringPiece factorOffsetStr;
+
     bool reciprocal = false;
 
     int32_t constants[CONSTANTS_COUNT] = {};
@@ -38,12 +44,20 @@ struct Factor {
         offset.setTo(0.0, status);
     }
 
+    void setStrings(UErrorCode &status) {
+        factorNumStr = factorNum.toString(status);
+        factorDenStr = factorDen.toString(status);
+        factorOffsetStr = offset.toString(status);
+    }
+
     void multiplyBy(const Factor &rhs, UErrorCode &status) {
         factorNum.multiplyBy(rhs.factorNum, status);
         factorDen.multiplyBy(rhs.factorDen, status);
         for (int i = 0; i < CONSTANTS_COUNT; i++)
             constants[i] += rhs.constants[i];
         offset.add(rhs.offset, status); // TODO(younies): fix this.
+
+       setStrings(status);
     }
 
     void divideBy(const Factor &rhs, UErrorCode &status) {
@@ -51,6 +65,8 @@ struct Factor {
         factorDen.divideBy(rhs.factorDen, status);
         for (int i = 0; i < CONSTANTS_COUNT; i++)
             constants[i] -= rhs.constants[i]; // TODO(younies): fix this
+    
+       setStrings(status);
     }
 
     // apply the power to the factor.
@@ -78,6 +94,9 @@ struct Factor {
             factorNum.setTo(factorDen, status);
             factorDen.setTo(temp, status);
         }
+
+
+       setStrings(status);
     }
 
     // Flip the `Factor`, for example, factor= 2/3, flippedFactor = 3/2
@@ -90,6 +109,9 @@ struct Factor {
         for (int i = 0; i < CONSTANTS_COUNT; i++) {
             constants[i] *= -1;
         }
+
+
+       setStrings(status);
     }
 
     // Apply SI prefix to the `Factor`
@@ -111,6 +133,9 @@ struct Factor {
         } else {
             factorDen.multiplyBy(e, status);
         }
+
+
+       setStrings(status);
     }
 };
 
@@ -354,8 +379,10 @@ void loadConversionRate(ConversionRate &conversionRate, StringPiece source, Stri
 
     conversionRate.source = source;
     conversionRate.target = target;
+
     conversionRate.factorNum.setTo(finalFactor.factorNum, status);
     conversionRate.factorDen.setTo(finalFactor.factorDen, status);
+
     conversionRate.offset.setTo(finalFactor.offset, status);
 
     // TODO(younies): use the database.
@@ -380,10 +407,6 @@ UnitConverter::UnitConverter(MeasureUnit source, MeasureUnit target, UErrorCode
 }
 
 void UnitConverter::convert(const DecNum &input_value, DecNum &output_value, UErrorCode status) {
-    std::printf(conversion_rate_.factorNum.toString(status).data());
-    std::printf(conversion_rate_.factorDen.toString(status).data());
-    std::printf(conversion_rate_.offset.toString(status).data());
-
     DecNum result(input_value, status);
     result.multiplyBy(conversion_rate_.factorNum, status);
     result.divideBy(conversion_rate_.factorDen, status);
index 097086ec95ebb7f982e85fdace8b52962410ac46..7208dd68c51f9ab91a4e4e5c4f73199dfc54b20c 100644 (file)
@@ -2184,7 +2184,7 @@ UBool IntlTest::assertEqualsNear(const char *message, const number::impl::DecNum
     decNumPrecision.setTo(precision, status);
 
     difference.setTo(expected, status);
-    difference.subtract(actual, status);
+  //   difference.subtract(actual, status);
     if (difference.isNegative()) difference.multiplyBy(-1, status);
 
     if (difference.greaterThan(decNumPrecision, status) || U_FAILURE(status) || true) {