@@ -82,23 +82,50 @@ std::unique_ptr<TableMetadata> CreateBaseMetadata() {
8282
8383} // namespace
8484
85+ // Test AssignUUID
86+ TEST (TableMetadataBuilderTest, AssignUUIDApplyUpdate) {
87+ auto base = CreateBaseMetadata ();
88+ auto builder = TableMetadataBuilder::BuildFrom (base.get ());
89+
90+ // Apply AssignUUID update
91+ table::AssignUUID uuid_update (" apply-uuid" );
92+ uuid_update.ApplyTo (*builder);
93+
94+ ICEBERG_UNWRAP_OR_FAIL (auto metadata, builder->Build ());
95+ EXPECT_EQ (metadata->table_uuid , " apply-uuid" );
96+ }
97+
8598TEST (TableUpdateTest, AssignUUIDGenerateRequirements) {
8699 table::AssignUUID update (" new-uuid" );
87100
88101 // New table - no requirements (AssignUUID doesn't generate requirements)
89102 auto new_table_reqs = GenerateRequirements (update, nullptr );
90103 EXPECT_TRUE (new_table_reqs.empty ());
91104
92- // Existing table - AssignUUID doesn't generate requirements anymore
93- // The UUID assertion is added by ForUpdateTable/ForReplaceTable methods
105+ // Existing table - no requirements
94106 auto base = CreateBaseMetadata ();
95107 auto existing_table_reqs = GenerateRequirements (update, base.get ());
96108 EXPECT_TRUE (existing_table_reqs.empty ());
109+ }
110+
111+ // Test AddSortOrder
112+ TEST (TableMetadataBuilderTest, ApplyAddSortOrderUpdate) {
113+ auto base = CreateBaseMetadata ();
114+ auto builder = TableMetadataBuilder::BuildFrom (base.get ());
97115
98- // Existing table with empty UUID - no requirements
99- base->table_uuid = " " ;
100- auto empty_uuid_reqs = GenerateRequirements (update, base.get ());
101- EXPECT_TRUE (empty_uuid_reqs.empty ());
116+ // Apply AddSortOrder update
117+ auto schema = CreateTestSchema ();
118+ SortField sort_field (1 , Transform::Identity (), SortDirection::kAscending ,
119+ NullOrder::kFirst );
120+ ICEBERG_UNWRAP_OR_FAIL (auto sort_order_unique,
121+ SortOrder::Make (*schema, 1 , std::vector<SortField>{sort_field}));
122+ auto sort_order = std::shared_ptr<SortOrder>(std::move (sort_order_unique));
123+ table::AddSortOrder sort_order_update (sort_order);
124+ sort_order_update.ApplyTo (*builder);
125+
126+ ICEBERG_UNWRAP_OR_FAIL (auto metadata, builder->Build ());
127+ ASSERT_EQ (metadata->sort_orders .size (), 2 );
128+ EXPECT_EQ (metadata->sort_orders [1 ]->order_id (), 1 );
102129}
103130
104131TEST (TableUpdateTest, AddSortOrderGenerateRequirements) {
@@ -113,7 +140,40 @@ TEST(TableUpdateTest, AddSortOrderGenerateRequirements) {
113140 auto new_table_reqs = GenerateRequirements (update, nullptr );
114141 EXPECT_TRUE (new_table_reqs.empty ());
115142
116- // Existing table - no requirements (AddSortOrder doesn't generate requirements)
143+ // Existing table - no requirements
144+ auto base = CreateBaseMetadata ();
145+ auto existing_table_reqs = GenerateRequirements (update, base.get ());
146+ EXPECT_TRUE (existing_table_reqs.empty ());
147+ }
148+
149+ // Test SetDefaultSortOrder
150+ TEST (TableMetadataBuilderTest, ApplySetDefaultSortOrderUpdate) {
151+ auto base = CreateBaseMetadata ();
152+ auto builder = TableMetadataBuilder::BuildFrom (base.get ());
153+
154+ auto schema = CreateTestSchema ();
155+ SortField sort_field (1 , Transform::Identity (), SortDirection::kAscending ,
156+ NullOrder::kFirst );
157+ ICEBERG_UNWRAP_OR_FAIL (auto sort_order_unique,
158+ SortOrder::Make (*schema, 1 , std::vector<SortField>{sort_field}));
159+ auto sort_order = std::shared_ptr<SortOrder>(std::move (sort_order_unique));
160+ builder->AddSortOrder (sort_order);
161+
162+ table::SetDefaultSortOrder set_default_update (1 );
163+ set_default_update.ApplyTo (*builder);
164+
165+ ICEBERG_UNWRAP_OR_FAIL (auto metadata, builder->Build ());
166+ EXPECT_EQ (metadata->default_sort_order_id , 1 );
167+ }
168+
169+ TEST (TableUpdateTest, SetDefaultSortOrderGenerateRequirements) {
170+ table::SetDefaultSortOrder update (1 );
171+
172+ // New table - no requirements
173+ auto new_table_reqs = GenerateRequirements (update, nullptr );
174+ EXPECT_TRUE (new_table_reqs.empty ());
175+
176+ // Existing table - no requirements
117177 auto base = CreateBaseMetadata ();
118178 auto existing_table_reqs = GenerateRequirements (update, base.get ());
119179 EXPECT_TRUE (existing_table_reqs.empty ());
0 commit comments