Skip to content

Commit 54d9636

Browse files
committed
test(temporal): add unit test for TemporalUtils::IsUtcOffset
Directly cover the UTC/non-UTC/unparseable offset cases the timestamptz default-value enforcement relies on.
1 parent 2052e4f commit 54d9636

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

src/iceberg/test/temporal_util_test.cc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,31 @@ TEST(TemporalUtilTest, ParseTimestampNsChecksInt64Bounds) {
5353
IsError(ErrorKind::kInvalidArgument));
5454
}
5555

56+
TEST(TemporalUtilTest, IsUtcOffset) {
57+
// UTC offsets: "Z", "+00:00" and "-00:00".
58+
ICEBERG_UNWRAP_OR_FAIL(auto z, TemporalUtils::IsUtcOffset("2024-06-27T00:00:00Z"));
59+
EXPECT_TRUE(z);
60+
ICEBERG_UNWRAP_OR_FAIL(auto plus_zero,
61+
TemporalUtils::IsUtcOffset("2024-06-27T00:00:00+00:00"));
62+
EXPECT_TRUE(plus_zero);
63+
ICEBERG_UNWRAP_OR_FAIL(auto minus_zero,
64+
TemporalUtils::IsUtcOffset("2024-06-27T00:00:00-00:00"));
65+
EXPECT_TRUE(minus_zero);
66+
67+
// Non-UTC offsets.
68+
ICEBERG_UNWRAP_OR_FAIL(auto plus_five,
69+
TemporalUtils::IsUtcOffset("2024-06-27T05:00:00+05:00"));
70+
EXPECT_FALSE(plus_five);
71+
ICEBERG_UNWRAP_OR_FAIL(auto minus_eight,
72+
TemporalUtils::IsUtcOffset("2024-06-27T00:00:00-08:00"));
73+
EXPECT_FALSE(minus_eight);
74+
75+
// A missing or unparseable timezone suffix is an error.
76+
EXPECT_THAT(TemporalUtils::IsUtcOffset("2024-06-27T00:00:00"),
77+
IsError(ErrorKind::kInvalidArgument));
78+
EXPECT_THAT(TemporalUtils::IsUtcOffset(""), IsError(ErrorKind::kInvalidArgument));
79+
}
80+
5681
TEST(TemporalUtilTest, ParseTimestampNsRejectsMoreThanNineFractionalDigits) {
5782
EXPECT_THAT(TemporalUtils::ParseTimestampNs("2026-01-01T00:00:01.0000010011"),
5883
IsError(ErrorKind::kInvalidArgument));

0 commit comments

Comments
 (0)