2323#include < bit>
2424#include < cmath>
2525#include < cstdint>
26- #include < vector>
2726
2827#include < gmock/gmock.h>
2928#include < gtest/gtest.h>
30- #include < sys/types.h>
3129
3230#include " iceberg/util/int128.h"
3331#include " matchers.h"
@@ -48,11 +46,6 @@ void AssertDecimalFromString(const std::string& s, const Decimal& expected,
4846 EXPECT_EQ (expected_scale, scale);
4947}
5048
51- Decimal DecimalFromInt128 (int128_t value) {
52- return {static_cast <int64_t >(value >> 64 ),
53- static_cast <uint64_t >(value & 0xFFFFFFFFFFFFFFFFULL )};
54- }
55-
5649} // namespace
5750
5851TEST (DecimalTest, Basics) {
@@ -1094,11 +1087,10 @@ TEST(DecimalTestFunctionality, Multiply) {
10941087 for (auto x : std::vector<int128_t >{-INT64_MAX, -INT32_MAX, 0 , INT32_MAX, INT64_MAX}) {
10951088 for (auto y :
10961089 std::vector<int128_t >{-INT32_MAX, -32 , -2 , -1 , 0 , 1 , 2 , 32 , INT32_MAX}) {
1097- Decimal decimal_x = DecimalFromInt128 (x);
1098- Decimal decimal_y = DecimalFromInt128 (y);
1090+ Decimal decimal_x (x);
1091+ Decimal decimal_y (y);
10991092 Decimal result = decimal_x * decimal_y;
1100- EXPECT_EQ (DecimalFromInt128 (x * y), result)
1101- << " x: " << decimal_x << " y: " << decimal_y;
1093+ EXPECT_EQ (Decimal (x * y), result) << " x: " << decimal_x << " y: " << decimal_y;
11021094 }
11031095 }
11041096}
@@ -1111,11 +1103,10 @@ TEST(DecimalTestFunctionality, Divide) {
11111103
11121104 for (auto x : std::vector<int128_t >{-INT64_MAX, -INT32_MAX, 0 , INT32_MAX, INT64_MAX}) {
11131105 for (auto y : std::vector<int128_t >{-INT32_MAX, -32 , -2 , -1 , 1 , 2 , 32 , INT32_MAX}) {
1114- Decimal decimal_x = DecimalFromInt128 (x);
1115- Decimal decimal_y = DecimalFromInt128 (y);
1106+ Decimal decimal_x (x);
1107+ Decimal decimal_y (y);
11161108 Decimal result = decimal_x / decimal_y;
1117- EXPECT_EQ (DecimalFromInt128 (x / y), result)
1118- << " x: " << decimal_x << " y: " << decimal_y;
1109+ EXPECT_EQ (Decimal (x / y), result) << " x: " << decimal_x << " y: " << decimal_y;
11191110 }
11201111 }
11211112}
@@ -1129,11 +1120,10 @@ TEST(DecimalTestFunctionality, Modulo) {
11291120 // Test some edge cases
11301121 for (auto x : std::vector<int128_t >{-INT64_MAX, -INT32_MAX, 0 , INT32_MAX, INT64_MAX}) {
11311122 for (auto y : std::vector<int128_t >{-INT32_MAX, -32 , -2 , -1 , 1 , 2 , 32 , INT32_MAX}) {
1132- Decimal decimal_x = DecimalFromInt128 (x);
1133- Decimal decimal_y = DecimalFromInt128 (y);
1123+ Decimal decimal_x (x);
1124+ Decimal decimal_y (y);
11341125 Decimal result = decimal_x % decimal_y;
1135- EXPECT_EQ (DecimalFromInt128 (x % y), result)
1136- << " x: " << decimal_x << " y: " << decimal_y;
1126+ EXPECT_EQ (Decimal (x % y), result) << " x: " << decimal_x << " y: " << decimal_y;
11371127 }
11381128 }
11391129}
@@ -1206,8 +1196,8 @@ TEST(DecimalTestFunctionality, FitsInPrecision) {
12061196
12071197TEST (DecimalTest, LeftShift) {
12081198 auto check = [](int128_t x, uint32_t bits) {
1209- auto expected = DecimalFromInt128 (x << bits);
1210- auto actual = DecimalFromInt128 (x) << bits;
1199+ auto expected = Decimal (x << bits);
1200+ auto actual = Decimal (x) << bits;
12111201 ASSERT_EQ (actual.low (), expected.low ());
12121202 ASSERT_EQ (actual.high (), expected.high ());
12131203 };
0 commit comments