cyb70289 commented on a change in pull request #9435:
URL: https://github.com/apache/arrow/pull/9435#discussion_r580796282



##########
File path: cpp/src/arrow/compute/kernels/aggregate_test.cc
##########
@@ -1533,23 +1533,67 @@ TEST_F(TestInt64QuantileKernel, Int64) {
 class TestRandomQuantileKernel : public TestPrimitiveQuantileKernel<Int32Type> 
{
  public:
   void CheckQuantiles(int64_t array_size, int64_t num_quantiles) {
-    auto rand = random::RandomArrayGenerator(0x5487658);
+    std::shared_ptr<Array> array;
+    std::vector<double> quantiles;
     // small value range to exercise input array with equal values and 
histogram approach
-    const auto array = rand.Numeric<Int32Type>(array_size, -100, 200, 0.1);
+    GenerateTestData(array_size, num_quantiles, -100, 200, &array, &quantiles);
+
+    this->AssertQuantilesAre(array, QuantileOptions{quantiles},
+                             NaiveQuantile(*array, quantiles, 
interpolations_));
+  }
 
+  void CheckTDigests(std::vector<int> chunk_sizes, int64_t num_quantiles) {
+    int total_size = 0;
+    for (int size : chunk_sizes) {
+      total_size += size;
+    }
+    std::shared_ptr<Array> array;
     std::vector<double> quantiles;
-    random_real(num_quantiles, 0x5487658, 0.0, 1.0, &quantiles);
-    // make sure to exercise 0 and 1 quantiles
-    *std::min_element(quantiles.begin(), quantiles.end()) = 0;
-    *std::max_element(quantiles.begin(), quantiles.end()) = 1;
+    GenerateTestData(total_size, num_quantiles, 100, 123456789, &array, 
&quantiles);
 
-    this->AssertQuantilesAre(array, QuantileOptions{quantiles},
-                             NaiveQuantile(*array, quantiles));
+    total_size = 0;
+    ArrayVector array_vector;
+    for (int size : chunk_sizes) {
+      array_vector.emplace_back(array->Slice(total_size, size));
+      total_size += size;
+    }
+    auto chunked = *ChunkedArray::Make(array_vector);
+
+    TDigestOptions options(quantiles);
+    ASSERT_OK_AND_ASSIGN(Datum out, TDigest(chunked, options));
+    const auto& out_array = out.make_array();
+    ASSERT_OK(out_array->ValidateFull());
+    ASSERT_EQ(out_array->length(), quantiles.size());
+    ASSERT_EQ(out_array->null_count(), 0);
+    ASSERT_EQ(out_array->type(), float64());

Review comment:
       Done




----------------------------------------------------------------
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:
[email protected]


Reply via email to