Skip to content

Commit 24e73a4

Browse files
committed
add test
1 parent e83a468 commit 24e73a4

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

src/iceberg/test/table_update_test.cc

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,4 +314,56 @@ TEST(TableUpdateTest, AssignUUIDApplyUpdate) {
314314
EXPECT_EQ(metadata->table_uuid, "apply-uuid");
315315
}
316316

317+
// Test AddSortOrder ApplyTo
318+
TEST(TableUpdateTest, AddSortOrderApplyUpdate) {
319+
auto base = CreateBaseMetadata();
320+
auto builder = TableMetadataBuilder::BuildFrom(base.get());
321+
322+
// Create a sort order
323+
auto schema = CreateTestSchema();
324+
SortField sort_field(1, Transform::Identity(), SortDirection::kAscending,
325+
NullOrder::kFirst);
326+
auto sort_order = std::shared_ptr<SortOrder>(
327+
SortOrder::Make(*schema, 1, std::vector<SortField>{sort_field}).value().release());
328+
329+
// Apply AddSortOrder update
330+
table::AddSortOrder add_sort_order(sort_order);
331+
add_sort_order.ApplyTo(*builder);
332+
333+
ICEBERG_UNWRAP_OR_FAIL(auto metadata, builder->Build());
334+
335+
// Verify the sort order was added
336+
ASSERT_EQ(metadata->sort_orders.size(), 2); // unsorted + new order
337+
auto& added_order = metadata->sort_orders[1];
338+
EXPECT_EQ(added_order->order_id(), 1);
339+
EXPECT_EQ(added_order->fields().size(), 1);
340+
EXPECT_EQ(added_order->fields()[0].source_id(), 1);
341+
EXPECT_EQ(added_order->fields()[0].direction(), SortDirection::kAscending);
342+
EXPECT_EQ(added_order->fields()[0].null_order(), NullOrder::kFirst);
343+
}
344+
345+
// Test SetDefaultSortOrder ApplyTo
346+
TEST(TableUpdateTest, SetDefaultSortOrderApplyUpdate) {
347+
auto base = CreateBaseMetadata();
348+
349+
// add a sort order to the base metadata
350+
auto schema = CreateTestSchema();
351+
SortField sort_field(1, Transform::Identity(), SortDirection::kDescending,
352+
NullOrder::kLast);
353+
auto sort_order = std::shared_ptr<SortOrder>(
354+
SortOrder::Make(*schema, 1, std::vector<SortField>{sort_field}).value().release());
355+
base->sort_orders.push_back(sort_order);
356+
357+
auto builder = TableMetadataBuilder::BuildFrom(base.get());
358+
359+
// Apply SetDefaultSortOrder update to set the new sort order as default
360+
table::SetDefaultSortOrder set_default_sort_order(1);
361+
set_default_sort_order.ApplyTo(*builder);
362+
363+
ICEBERG_UNWRAP_OR_FAIL(auto metadata, builder->Build());
364+
365+
// Verify the default sort order was changed
366+
EXPECT_EQ(metadata->default_sort_order_id, 1);
367+
}
368+
317369
} // namespace iceberg

0 commit comments

Comments
 (0)