@Test
fun `image loader starts request for link that is not known`() {
runWithCallback(IMAGE_ID) { _, _, _, fetchedUris ->
- assertThat(fetchedUris, contains(freenetURI))
+ assertThat(fetchedUris(), contains(freenetURI))
}
}
fun `element loader only starts request once`() {
runWithCallback(IMAGE_ID) { elementLoader, _, _, fetchedUris ->
elementLoader.loadElement(IMAGE_ID)
- assertThat(fetchedUris, contains(freenetURI))
+ assertThat(fetchedUris(), contains(freenetURI))
}
}
}
-private fun runWithCallback(requestUri: String, ticker: Ticker = createTicker(), callbackAction: (elementLoader: DefaultElementLoader, linkedElement: LinkedElement, callback: BackgroundFetchCallback, fetchedUris: List<FreenetURI>) -> Unit) {
+private fun runWithCallback(requestUri: String, ticker: Ticker = createTicker(), callbackAction: (elementLoader: DefaultElementLoader, linkedElement: LinkedElement, callback: BackgroundFetchCallback, fetchedUris: () -> List<FreenetURI>) -> Unit) {
val fetchedUris = mutableListOf<FreenetURI>()
val callback = AtomicReference<BackgroundFetchCallback>()
val freenetInterface = overrideStartFetch { uri, backgroundFetchCallback ->
}
val elementLoader = DefaultElementLoader(freenetInterface, ticker)
val linkedElement = elementLoader.loadElement(requestUri)
- callbackAction(elementLoader, linkedElement, callback.get(), fetchedUris)
+ callbackAction(elementLoader, linkedElement, callback.get(), { fetchedUris })
}
private fun overrideStartFetch(action: (FreenetURI, BackgroundFetchCallback) -> Unit) = object : FreenetInterface(null, null, null, null, null, dummyHighLevelSimpleClientCreator) {