anoopj commented on code in PR #16689:
URL: https://github.com/apache/iceberg/pull/16689#discussion_r3366539971
##########
core/src/test/java/org/apache/iceberg/TestTrackingStruct.java:
##########
@@ -433,6 +453,81 @@ void testExistingToTerminalTransitions() {
assertThat(replaced.snapshotId()).isEqualTo(999L);
}
+ private static Stream<Arguments> deriveStatusCases() {
+ long sameSnapshot = 42L;
+ long laterSnapshot = 999L;
+ return Stream.of(
+ // ADDED source
+ Arguments.of(EntryStatus.ADDED, sameSnapshot, false,
EntryStatus.ADDED),
+ Arguments.of(EntryStatus.ADDED, sameSnapshot, true, EntryStatus.ADDED),
+ Arguments.of(EntryStatus.ADDED, laterSnapshot, false,
EntryStatus.EXISTING),
+ Arguments.of(EntryStatus.ADDED, laterSnapshot, true,
EntryStatus.MODIFIED),
+ // EXISTING source
+ Arguments.of(EntryStatus.EXISTING, sameSnapshot, false,
EntryStatus.EXISTING),
+ Arguments.of(EntryStatus.EXISTING, sameSnapshot, true,
EntryStatus.MODIFIED),
+ Arguments.of(EntryStatus.EXISTING, laterSnapshot, false,
EntryStatus.EXISTING),
+ Arguments.of(EntryStatus.EXISTING, laterSnapshot, true,
EntryStatus.MODIFIED),
+ // MODIFIED source
+ Arguments.of(EntryStatus.MODIFIED, sameSnapshot, false,
EntryStatus.MODIFIED),
+ Arguments.of(EntryStatus.MODIFIED, sameSnapshot, true,
EntryStatus.MODIFIED),
+ Arguments.of(EntryStatus.MODIFIED, laterSnapshot, false,
EntryStatus.EXISTING),
+ Arguments.of(EntryStatus.MODIFIED, laterSnapshot, true,
EntryStatus.MODIFIED));
+ }
+
+ @ParameterizedTest
+ @MethodSource("deriveStatusCases")
+ void testDeriveStatus(
+ EntryStatus sourceStatus, long newSnapshotId, boolean mutate,
EntryStatus expected) {
+ Tracking source = sourceTrackingWithStatus(sourceStatus);
+ TrackingBuilder builder = TrackingBuilder.from(source, newSnapshotId);
+ if (mutate) {
+ builder.dvUpdated();
+ }
+
+ assertThat(builder.build().status()).isEqualTo(expected);
+ }
+
+ @Test
+ void testExistingPreservesSourceSnapshotId() {
+ Tracking source = sourceTracking();
+ Tracking existing = TrackingBuilder.from(source, 999L).build();
+ assertThat(existing.status()).isEqualTo(EntryStatus.EXISTING);
+ assertThat(existing.snapshotId()).isEqualTo(source.snapshotId());
+ }
+
+ @Test
+ void testModifiedUsesNewSnapshotId() {
+ Tracking source = sourceTracking();
+ Tracking modified = TrackingBuilder.from(source, 999L).dvUpdated().build();
+ assertThat(modified.status()).isEqualTo(EntryStatus.MODIFIED);
+ assertThat(modified.snapshotId()).isEqualTo(999L);
Review Comment:
Good idea. Done in both `testExistingPreservesSourceSnapshotId` and
`testModifiedUsesNewSnapshotId`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]