@@ -526,6 +526,48 @@ TEST_F(OverwriteFilesTest, BulkDeleteFilesEquivalentToRepeatedDeleteFile) {
526526 EXPECT_EQ (snapshot->summary .at (SnapshotSummaryFields::kTotalDataFiles ), " 0" );
527527}
528528
529+ // Content validation: because both sets hold std::shared_ptr<DataFile>, DeleteFiles
530+ // guards content so a data file cannot be passed as a delete file (or vice versa). A
531+ // delete file (position/equality) in the data-file set is rejected; the error surfaces
532+ // at Commit().
533+ TEST_F (OverwriteFilesTest, BulkDeleteFilesRejectsDeleteFileInDataSet) {
534+ auto del_file =
535+ MakeDeleteFile (" /delete/del_a.parquet" , 1L ); // content = positionDeletes
536+ DataFileSet data_files;
537+ data_files.insert (del_file);
538+
539+ ICEBERG_UNWRAP_OR_FAIL (auto op, NewOverwrite ());
540+ op->DeleteFiles (data_files, DeleteFileSet{});
541+ auto result = op->Commit ();
542+ EXPECT_THAT (result, IsError (ErrorKind::kValidationFailed ));
543+ EXPECT_THAT (result, HasErrorMessage (" has delete-file content" ));
544+ }
545+
546+ // A data file (content kData) in the delete-file set is rejected.
547+ TEST_F (OverwriteFilesTest, BulkDeleteFilesRejectsDataFileInDeleteSet) {
548+ DeleteFileSet delete_files;
549+ delete_files.insert (file_a_); // content = kData
550+
551+ ICEBERG_UNWRAP_OR_FAIL (auto op, NewOverwrite ());
552+ op->DeleteFiles (DataFileSet{}, delete_files);
553+ auto result = op->Commit ();
554+ EXPECT_THAT (result, IsError (ErrorKind::kValidationFailed ));
555+ EXPECT_THAT (result, HasErrorMessage (" has data-file content" ));
556+ }
557+
558+ // An equality delete file is a valid delete file (content != kData) and is accepted in
559+ // the delete-file set.
560+ TEST_F (OverwriteFilesTest, BulkDeleteFilesAcceptsEqualityDeleteInDeleteSet) {
561+ auto eq_delete = MakeEqualityDeleteFile (" /delete/eq_a.parquet" , 1L );
562+ DeleteFileSet delete_files;
563+ delete_files.insert (eq_delete);
564+
565+ ICEBERG_UNWRAP_OR_FAIL (auto op, NewOverwrite ());
566+ op->DeleteFiles (DataFileSet{}, delete_files);
567+ op->AddFile (file_b_);
568+ EXPECT_THAT (op->Commit (), IsOk ());
569+ }
570+
529571// =====================================================================================
530572// 9.6 Concurrency-validation tests (Req 8.2, 8.3, 9.2-9.5; Properties 6, 7)
531573// =====================================================================================
0 commit comments