### Question:
TransformSplit extends BaseInputSplit { public static TransformSplit ofSearchReplace(@NonNull BaseInputSplit sourceSplit, @NonNull final String search, @NonNull final String replace) throws URISyntaxException { return new TransformSplit(sourceSplit, new URITransform() { @Override public URI apply(URI uri) throws URISyntaxException { return new URI(uri.toString().replace(search, replace)); } }); } TransformSplit(@NonNull BaseInputSplit sourceSplit, @NonNull URITransform transform); static TransformSplit ofSearchReplace(@NonNull BaseInputSplit sourceSplit, @NonNull final String search,
                                                 @NonNull final String replace); @Override void updateSplitLocations(boolean reset); @Override boolean needsBootstrapForWrite(); @Override void bootStrapForWrite(); @Override OutputStream openOutputStreamFor(String location); @Override InputStream openInputStreamFor(String location); @Override void reset(); @Override boolean resetSupported();  }### Answer:
@Test public void testSearchReplace() throws URISyntaxException { Collection<URI> inputFiles = asList(new URI("file: InputSplit SUT = TransformSplit.ofSearchReplace(new CollectionInputSplit(inputFiles), "-in.csv", "-out.csv"); assertArrayEquals(new URI[] {new URI("file: SUT.locations()); }