|
21 | 21 | package com.apple.foundationdb.record.provider.foundationdb.keyspace; |
22 | 22 |
|
23 | 23 | import com.apple.foundationdb.record.RecordCoreArgumentException; |
| 24 | +import com.apple.foundationdb.record.ScanProperties; |
24 | 25 | import com.apple.foundationdb.record.provider.foundationdb.FDBDatabase; |
25 | 26 | import com.apple.foundationdb.record.provider.foundationdb.FDBRecordContext; |
26 | 27 | import com.apple.foundationdb.record.test.FDBDatabaseExtension; |
|
29 | 30 | import org.junit.jupiter.api.Test; |
30 | 31 | import org.junit.jupiter.api.extension.RegisterExtension; |
31 | 32 | import org.junit.jupiter.params.ParameterizedTest; |
| 33 | +import org.mockito.Mockito; |
32 | 34 |
|
33 | 35 | import java.util.UUID; |
34 | 36 | import java.util.concurrent.ExecutionException; |
@@ -191,4 +193,24 @@ void testToResolvedPathAsyncWithInvalidTuple() { |
191 | 193 | }); |
192 | 194 | } |
193 | 195 | } |
| 196 | + |
| 197 | + /** |
| 198 | + * Test of methods with default implementations to ensure backwards compatibility, |
| 199 | + * in case someone is implementing {@link KeySpacePath}. |
| 200 | + **/ |
| 201 | + @Test |
| 202 | + void testDefaultMethods() { |
| 203 | + final KeySpacePath mock = Mockito.mock(KeySpacePath.class); |
| 204 | + final FDBDatabase database = dbExtension.getDatabase(); |
| 205 | + |
| 206 | + try (FDBRecordContext context = database.openContext()) { |
| 207 | + // thenCallReadMethod throws an error if there is not a default implementation |
| 208 | + Mockito.when(mock.toResolvedPathAsync(Mockito.any(), Mockito.any())).thenCallRealMethod(); |
| 209 | + assertThrows(UnsupportedOperationException.class, |
| 210 | + () -> mock.toResolvedPathAsync(context, Tuple.from("foo").pack())); |
| 211 | + Mockito.when(mock.exportAllData(Mockito.any(), Mockito.any(), Mockito.any())).thenCallRealMethod(); |
| 212 | + assertThrows(UnsupportedOperationException.class, |
| 213 | + () -> mock.exportAllData(context, null, ScanProperties.FORWARD_SCAN)); |
| 214 | + } |
| 215 | + } |
194 | 216 | } |
0 commit comments