### Question:
FileCache { @NonNull public static FileCache getInstanceWithSingleProcessLocking(@NonNull File cacheDirectory) { return new FileCache(cacheDirectory, LockingScope.SINGLE_PROCESS); } private  FileCache(@NonNull File cacheDirectory, @NonNull LockingScope lockingScope); @NonNull static FileCache getInstanceWithMultiProcessLocking(@NonNull File cacheDirectory); @NonNull static FileCache getInstanceWithSingleProcessLocking(@NonNull File cacheDirectory); @NonNull File getCacheDirectory(); @NonNull QueryResult createFile(
            @NonNull File outputFile,
            @NonNull Inputs inputs,
            @NonNull ExceptionRunnable fileCreator); @NonNull QueryResult createFileInCacheIfAbsent(
            @NonNull Inputs inputs,
            @NonNull ExceptionConsumer<File> fileCreator); boolean cacheEntryExists(@NonNull Inputs inputs); @NonNull File getFileInCache(@NonNull Inputs inputs); void deleteOldCacheEntries(long lastTimestamp); void delete(); @Override String toString(); static CacheSession newSession();  }### Answer:
@Test public void testCreateFile_MultiThreads_SingleProcessLocking_SameInputDifferentOutputs() throws IOException { testCreateFile_MultiThreads_SameCacheSameInputDifferentOutputs( FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder())); }
@Test public void testCreateFile_MultiThreads_SingleProcessLocking_DifferentInputsDifferentOutputs() throws IOException { testCreateFile_MultiThreads_SameCacheDifferentInputsDifferentOutputs( FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder())); }
@Test public void testCreateFile_MultiThreads_SingleProcessLocking_DifferentCaches() throws IOException { testCreateFile_MultiThreads_DifferentCaches( FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder()), FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder())); }
@Test public void testCreateFileInCacheIfAbsent_MultiThreads_SingleProcessLocking_SameInput() throws IOException { testCreateFileInCacheIfAbsent_MultiThreads_SameCacheSameInput( FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder())); }
@Test public void testCreateFileInCacheIfAbsent_MultiThreads_SingleProcessLocking_DifferentInputs() throws IOException { testCreateFileInCacheIfAbsent_MultiThreads_SameCacheDifferentInputs( FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder())); }
@Test public void testCreateFileInCacheIfAbsent_MultiThreads_SingleProcessLocking_DifferentCaches() throws IOException { testCreateFileInCacheIfAbsent_MultiThreads_DifferentCaches( FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder()), FileCache.getInstanceWithSingleProcessLocking(temporaryFolder.newFolder())); }