You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2020/11/25 08:27:40 UTC

[GitHub] [arrow] pitrou commented on a change in pull request #8763: ARROW-10720: [C++] Add Rescale support for BasicDecimal256

pitrou commented on a change in pull request #8763:
URL: https://github.com/apache/arrow/pull/8763#discussion_r530182575



##########
File path: cpp/src/arrow/util/decimal_test.cc
##########
@@ -985,6 +986,45 @@ TEST(Decimal128Test, Divide) {
   }
 }
 
+TEST(Decimal128Test, Rescale) {
+  ASSERT_EQ(Decimal128(11100), Decimal128(111).Rescale(0, 2).ValueOrDie());

Review comment:
       Nit: we've got `ASSERT_OK_AND_EQ` for this. For example:
   ```c++
   ASSERT_OK_AND_EQ(Decimal128(11100), Decimal128(111).Rescale(0, 2));
   ```

##########
File path: cpp/src/arrow/util/decimal_test.cc
##########
@@ -985,6 +986,45 @@ TEST(Decimal128Test, Divide) {
   }
 }
 
+TEST(Decimal128Test, Rescale) {
+  ASSERT_EQ(Decimal128(11100), Decimal128(111).Rescale(0, 2).ValueOrDie());
+  ASSERT_EQ(Decimal128(111), Decimal128(11100).Rescale(2, 0).ValueOrDie());
+  ASSERT_EQ(Decimal128(5), Decimal128(500000).Rescale(6, 1).ValueOrDie());
+  ASSERT_EQ(Decimal128(500000), Decimal128(5).Rescale(1, 6).ValueOrDie());
+  ASSERT_TRUE(Decimal128(555555).Rescale(6, 1).status().IsInvalid());

Review comment:
       ```c++
   ASSERT_RAISES(Invalid, Decimal128(555555).Rescale(6, 1));
   ```

##########
File path: cpp/src/arrow/util/decimal_test.cc
##########
@@ -985,6 +986,45 @@ TEST(Decimal128Test, Divide) {
   }
 }
 
+TEST(Decimal128Test, Rescale) {
+  ASSERT_EQ(Decimal128(11100), Decimal128(111).Rescale(0, 2).ValueOrDie());
+  ASSERT_EQ(Decimal128(111), Decimal128(11100).Rescale(2, 0).ValueOrDie());
+  ASSERT_EQ(Decimal128(5), Decimal128(500000).Rescale(6, 1).ValueOrDie());
+  ASSERT_EQ(Decimal128(500000), Decimal128(5).Rescale(1, 6).ValueOrDie());
+  ASSERT_TRUE(Decimal128(555555).Rescale(6, 1).status().IsInvalid());
+
+  // Test some random numbers.
+  Decimal128 multiplier(1);
+  for (int delta_scale = 0; delta_scale < 29;
+       delta_scale++, multiplier *= Decimal128(10)) {

Review comment:
       You can limit the cost of this test by making the `delta_scale` loop the inner loop (generating random numbers is slightly expensive).




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org