From 02e1dbc84425b0ac7f771c82f70444f742397452 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Mon, 7 Aug 2017 22:20:57 -0700 Subject: Release 3.3.0 (#32) * Rewrite Logger (#29) * Remove dependency on timber * Update logger * Reorder throwabl * Fix lint * Update readme * Blank target * Create Zip (#30) * Finish zips with tests * Finalize * Update changelog * Add log hooks * Open most logging functions * Remap kpref items (#31) * Update readme * Generate files and prepare release * Kpref - --- .../test/kotlin/ca/allanwang/kau/kotlin/ZipTest.kt | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 core/src/test/kotlin/ca/allanwang/kau/kotlin/ZipTest.kt (limited to 'core/src/test/kotlin/ca/allanwang') diff --git a/core/src/test/kotlin/ca/allanwang/kau/kotlin/ZipTest.kt b/core/src/test/kotlin/ca/allanwang/kau/kotlin/ZipTest.kt new file mode 100644 index 0000000..4a04142 --- /dev/null +++ b/core/src/test/kotlin/ca/allanwang/kau/kotlin/ZipTest.kt @@ -0,0 +1,72 @@ +package ca.allanwang.kau.kotlin + +import org.jetbrains.anko.doAsync +import org.junit.Test +import java.util.* +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit +import kotlin.test.assertTrue + +/** + * Created by Allan Wang on 2017-08-06. + */ +class ZipTest { + + val debug = false + + fun p(text: String) { + if (debug) println(text) + } + + @Test + fun basic() { + val start = System.currentTimeMillis() + val latch = CountDownLatch(1) + val rnd = Random() + (0..10).map { + { + callback: ZipCallback -> + doAsync { + val sleepTime = rnd.nextInt(100) + 200L + p("Task $it will sleep for ${sleepTime}ms") + Thread.sleep(sleepTime) + val finish = System.currentTimeMillis() + p("Task $it finished in ${finish - start}ms at $finish") + callback(it) + }; Unit + } + }.zip(-1) { + results -> + val finish = System.currentTimeMillis() + println("Results ${results.contentToString()} received in ${finish - start}ms at $finish") + assertTrue((0..10).toList().toTypedArray().contentEquals(results), "Basic zip results do not match") + assertTrue(finish - start < 1000L, "Basic zip does not seem to be running asynchronously") + latch.countDown() + + } + latch.await(1100, TimeUnit.MILLISECONDS) + } + + @Test + fun basicAsync() { + val start = System.currentTimeMillis() + val latch = CountDownLatch(1) + val rnd = Random() + (0..10).map { + { + val sleepTime = rnd.nextInt(100) + 200L + p("Task $it will sleep for ${sleepTime}ms") + Thread.sleep(sleepTime) + val finish = System.currentTimeMillis() + p("Task $it finished in ${finish - start}ms at $finish") + } + }.zipAsync { + val finish = System.currentTimeMillis() + println("Results received in ${finish - start}ms at $finish") + assertTrue(finish - start < 1000L, "BasicAsync does not seem to be wrapping the tasks asynchronously") + latch.countDown() + } + latch.await(1100, TimeUnit.MILLISECONDS) + } + +} \ No newline at end of file -- cgit v1.2.3