| 566 | |
| 567 | template <typename DecimalValue, typename DecimalBuilder> |
| 568 | void TestDecimalBasic(std::shared_ptr<DataType> type) { |
| 569 | std::shared_ptr<Array> expected, actual; |
| 570 | |
| 571 | ASSERT_OK_AND_ASSIGN(actual, ArrayFromJSONString(type, "[]")); |
| 572 | ASSERT_OK(actual->ValidateFull()); |
| 573 | { |
| 574 | DecimalBuilder builder(type); |
| 575 | ASSERT_OK(builder.Finish(&expected)); |
| 576 | } |
| 577 | AssertArraysEqual(*expected, *actual); |
| 578 | |
| 579 | ASSERT_OK_AND_ASSIGN(actual, ArrayFromJSONString(type, "[\"123.4567\", \"-78.9000\"]")); |
| 580 | ASSERT_OK(actual->ValidateFull()); |
| 581 | { |
| 582 | DecimalBuilder builder(type); |
| 583 | ASSERT_OK(builder.Append(DecimalValue(1234567))); |
| 584 | ASSERT_OK(builder.Append(DecimalValue(-789000))); |
| 585 | ASSERT_OK(builder.Finish(&expected)); |
| 586 | } |
| 587 | AssertArraysEqual(*expected, *actual); |
| 588 | |
| 589 | ASSERT_OK_AND_ASSIGN(actual, ArrayFromJSONString(type, "[\"123.4567\", null]")); |
| 590 | ASSERT_OK(actual->ValidateFull()); |
| 591 | { |
| 592 | DecimalBuilder builder(type); |
| 593 | ASSERT_OK(builder.Append(DecimalValue(1234567))); |
| 594 | ASSERT_OK(builder.AppendNull()); |
| 595 | ASSERT_OK(builder.Finish(&expected)); |
| 596 | } |
| 597 | AssertArraysEqual(*expected, *actual); |
| 598 | } |
| 599 | |
| 600 | TEST(TestDecimal32FromString, Basics) { |
| 601 | TestDecimalBasic<Decimal32, Decimal32Builder>(decimal32(8, 4)); |
nothing calls this directly
no test coverage detected