2121import static org .assertj .core .api .Assertions .assertThat ;
2222
2323import java .nio .ByteBuffer ;
24- import java .util .Comparator ;
2524import java .util .List ;
2625import org .apache .iceberg .TestHelpers .RoundTripSerializer ;
2726import org .apache .iceberg .relocated .com .google .common .collect .ImmutableList ;
28- import org .apache .iceberg .types .Comparators ;
2927import org .apache .iceberg .types .Types ;
3028import org .junit .jupiter .api .Test ;
3129import org .junit .jupiter .params .ParameterizedTest ;
3230import org .junit .jupiter .params .provider .MethodSource ;
31+ import org .mockito .Mockito ;
3332
3433class TestTrackedFileStruct {
3534 private static final int FORMAT_VERSION_V4 = 4 ;
@@ -41,15 +40,16 @@ class TestTrackedFileStruct {
4140 private static final List <Types .NestedField > FIELDS =
4241 TrackedFile .schemaWithContentStats (PARTITION_TYPE , Types .StructType .of ()).fields ();
4342
44- private static final Comparator <StructLike > PARTITION_COMPARATOR =
45- Comparators .forType (PARTITION_TYPE );
46- private static final Comparator <StructLike > TRACKING_COMPARATOR =
47- Comparators .forType (Tracking .schema ());
43+ private static final Tracking TRACKING = Mockito .mock (Tracking .class );
44+ private static final Tracking TRACKING_COPY = Mockito .mock (Tracking .class );
4845
49- private static final Tracking TRACKING =
50- new TrackingStruct ( EntryStatus . ADDED , 42L , 10L , 10L , 43L , 1000L , null , null );
46+ private static final PartitionData PARTITION = Mockito . mock ( PartitionData . class );
47+ private static final PartitionData PARTITION_COPY = Mockito . mock ( PartitionData . class );
5148
52- private static final PartitionData PARTITION = newPartition (7 , "music" );
49+ static {
50+ Mockito .when (TRACKING .copy ()).thenReturn (TRACKING_COPY );
51+ Mockito .when (PARTITION .copy ()).thenReturn (PARTITION_COPY );
52+ }
5353
5454 private static final DeletionVectorStruct DELETION_VECTOR =
5555 DeletionVectorStruct .builder ()
@@ -72,15 +72,7 @@ class TestTrackedFileStruct {
7272 .minSequenceNumber (5L )
7373 .build ();
7474
75- private static final ContentStats CONTENT_STATS =
76- BaseContentStats .builder ()
77- .withTableSchema (
78- new Schema (
79- Types .NestedField .optional (1 , "id" , Types .IntegerType .get ()),
80- Types .NestedField .optional (2 , "data" , Types .FloatType .get ())))
81- .withFieldStats (BaseFieldStats .builder ().fieldId (1 ).build ())
82- .withFieldStats (BaseFieldStats .builder ().fieldId (2 ).build ())
83- .build ();
75+ private static final ContentStats CONTENT_STATS = Mockito .mock (ContentStats .class );
8476
8577 @ Test
8678 void fieldAccess () {
@@ -224,8 +216,7 @@ void copy() {
224216 TrackedFile copy = file .copy ();
225217
226218 assertThat (copy ).isInstanceOf (TrackedFileStruct .class );
227- assertThat (TRACKING_COMPARATOR .compare ((StructLike ) copy .tracking (), (StructLike ) TRACKING ))
228- .isEqualTo (0 );
219+ assertThat (copy .tracking ()).isEqualTo (TRACKING_COPY );
229220 assertThat (copy .contentType ()).isEqualTo (FileContent .DATA );
230221 assertThat (copy .formatVersion ()).isEqualTo (FORMAT_VERSION_V4 );
231222 assertThat (copy .location ()).isEqualTo ("s3://bucket/data/00000-0-file.parquet" );
@@ -240,12 +231,9 @@ void copy() {
240231 assertThat (copy .keyMetadata ()).isEqualTo (ByteBuffer .wrap (new byte [] {1 , 2 , 3 }));
241232 assertThat (copy .splitOffsets ()).containsExactly (100L , 200L );
242233 assertThat (copy .equalityIds ()).containsExactly (1 , 2 , 3 );
243-
244- assertThat (PARTITION_COMPARATOR .compare (copy .partition (), PARTITION )).isEqualTo (0 );
234+ assertThat (copy .partition ()).isSameAs (PARTITION_COPY );
245235
246236 // mutable fields are deep-copied, not shared with the original
247- assertThat (copy .tracking ()).isNotSameAs (file .tracking ());
248- assertThat (copy .partition ()).isNotSameAs (file .partition ());
249237 assertThat (copy .deletionVector ()).isNotSameAs (file .deletionVector ());
250238 assertThat (copy .manifestInfo ()).isNotSameAs (file .manifestInfo ());
251239 assertThat (copy .keyMetadata ()).isNotSameAs (file .keyMetadata ());
@@ -280,12 +268,12 @@ void structLikeSize() {
280268 void serializationRoundTrip (RoundTripSerializer <TrackedFileStruct > serializer ) throws Exception {
281269 TrackedFileStruct file =
282270 new TrackedFileStruct (
283- TRACKING ,
271+ null , // TrackingStruct has its own serialization tests
284272 FileContent .DATA ,
285273 FORMAT_VERSION_V4 ,
286274 "s3://bucket/data/file.parquet" ,
287275 FileFormat .PARQUET ,
288- PARTITION ,
276+ null , // PartitionData has its own serialization tests
289277 100L ,
290278 1024L ,
291279 7 ,
@@ -299,15 +287,12 @@ void serializationRoundTrip(RoundTripSerializer<TrackedFileStruct> serializer) t
299287
300288 TrackedFileStruct deserialized = serializer .apply (file );
301289
302- assertThat (
303- TRACKING_COMPARATOR .compare (
304- (StructLike ) deserialized .tracking (), (StructLike ) TRACKING ))
305- .isEqualTo (0 );
290+ assertThat (deserialized .tracking ()).isNull ();
306291 assertThat (deserialized .contentType ()).isEqualTo (FileContent .DATA );
307292 assertThat (deserialized .formatVersion ()).isEqualTo (FORMAT_VERSION_V4 );
308293 assertThat (deserialized .location ()).isEqualTo ("s3://bucket/data/file.parquet" );
309294 assertThat (deserialized .fileFormat ()).isEqualTo (FileFormat .PARQUET );
310- assertThat (PARTITION_COMPARATOR . compare ( deserialized .partition (), PARTITION )). isEqualTo ( 0 );
295+ assertThat (deserialized .partition ()). isNull ( );
311296 assertThat (deserialized .recordCount ()).isEqualTo (100L );
312297 assertThat (deserialized .fileSizeInBytes ()).isEqualTo (1024L );
313298 assertThat (deserialized .specId ()).isEqualTo (7 );
0 commit comments