MCPcopy Create free account
hub / github.com/apache/arrow / TestApproxEquals

Method TestApproxEquals

cpp/src/arrow/scalar_test.cc:372–408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

370 }
371
372 void TestApproxEquals() {
373 // The scalars are unequal with the small delta
374 EqualOptions options = EqualOptions::Defaults().atol(0.05);
375 ASSERT_FALSE(scalar_val_->ApproxEquals(*scalar_other_, options));
376 ASSERT_FALSE(scalar_other_->ApproxEquals(*scalar_val_, options));
377 ASSERT_FALSE(scalar_nan_->ApproxEquals(*scalar_val_, options));
378 ASSERT_FALSE(scalar_nan_->ApproxEquals(*scalar_other_nan_, options));
379
380 // After enlarging the delta, they become equal
381 options = options.atol(0.15);
382 ASSERT_TRUE(scalar_val_->ApproxEquals(*scalar_other_, options));
383 ASSERT_TRUE(scalar_other_->ApproxEquals(*scalar_val_, options));
384 ASSERT_FALSE(scalar_nan_->ApproxEquals(*scalar_val_, options));
385 ASSERT_FALSE(scalar_nan_->ApproxEquals(*scalar_other_nan_, options));
386
387 options = options.nans_equal(true);
388 ASSERT_TRUE(scalar_val_->ApproxEquals(*scalar_other_, options));
389 ASSERT_TRUE(scalar_other_->ApproxEquals(*scalar_val_, options));
390 ASSERT_FALSE(scalar_nan_->ApproxEquals(*scalar_val_, options));
391 ASSERT_TRUE(scalar_nan_->ApproxEquals(*scalar_other_nan_, options));
392
393 options = options.atol(0.05);
394 ASSERT_FALSE(scalar_val_->ApproxEquals(*scalar_other_, options));
395 ASSERT_FALSE(scalar_other_->ApproxEquals(*scalar_val_, options));
396 ASSERT_FALSE(scalar_nan_->ApproxEquals(*scalar_val_, options));
397 ASSERT_TRUE(scalar_nan_->ApproxEquals(*scalar_other_nan_, options));
398
399 // Negative zeros
400 ASSERT_FALSE(scalar_zero_->ApproxEquals(*scalar_val_, options));
401 ASSERT_TRUE(scalar_zero_->ApproxEquals(*scalar_other_zero_, options));
402 ASSERT_TRUE(scalar_zero_->ApproxEquals(*scalar_neg_zero_, options));
403
404 options = options.signed_zeros_equal(false);
405 ASSERT_FALSE(scalar_zero_->ApproxEquals(*scalar_val_, options));
406 ASSERT_TRUE(scalar_zero_->ApproxEquals(*scalar_other_zero_, options));
407 ASSERT_FALSE(scalar_zero_->ApproxEquals(*scalar_neg_zero_, options));
408 }
409
410 void TestUseAtol() {
411 auto options = EqualOptions::Defaults().atol(0.2f);

Callers 1

TYPED_TESTFunction · 0.80

Calls 2

DefaultsFunction · 0.70
ApproxEqualsMethod · 0.45

Tested by

no test coverage detected