diff options
author | Allan Wang <me@allanwang.ca> | 2018-01-10 22:13:28 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-10 22:13:28 -0500 |
commit | fd5f2a82eb968b5d50f586925ebb705249062446 (patch) | |
tree | 7e2cb3edad1e2398d74eb2780a912ed05188db41 /app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt | |
parent | ad97b4ff946b4ba3a3f7ac880575eed9de810166 (diff) | |
download | frost-fd5f2a82eb968b5d50f586925ebb705249062446.tar.gz frost-fd5f2a82eb968b5d50f586925ebb705249062446.tar.bz2 frost-fd5f2a82eb968b5d50f586925ebb705249062446.zip |
Misc (#614)
* Add locale log
* Add flyweight design for authenticator
* Add option to have instant messages only
* Update interceptor
* Add hd image model loader (#613)
* Launch image view for view full image
* Update changelog
* Greatly improve ImageActivity loading
* Update hashes
* Add back keyword filter
* Clean up
Diffstat (limited to 'app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt')
-rw-r--r-- | app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt new file mode 100644 index 00000000..ec92b059 --- /dev/null +++ b/app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt @@ -0,0 +1,61 @@ +package com.pitchedapps.frost.rx + +import org.junit.Before +import org.junit.Test +import java.util.concurrent.CountDownLatch +import kotlin.test.assertEquals +import kotlin.test.assertNotEquals + +/** + * Created by Allan Wang on 07/01/18. + */ +private inline val threadId + get() = Thread.currentThread().id + +class ResettableFlyweightTest { + + class IntFlyweight : RxFlyweight<Int, Long, Long>() { + override fun call(input: Int): Long { + println("Call for $input on thread $threadId") + Thread.sleep(20) + return System.currentTimeMillis() + } + + override fun validate(input: Int, cond: Long) = System.currentTimeMillis() - cond < 500 + + override fun cache(input: Int): Long = System.currentTimeMillis() + } + + private lateinit var flyweight: IntFlyweight + private lateinit var latch: CountDownLatch + + @Before + fun init() { + flyweight = IntFlyweight() + latch = CountDownLatch(1) + } + + @Test + fun testCache() { + flyweight(1).subscribe { i -> + flyweight(1).subscribe { j -> + assertEquals(i, j, "Did not use cache during calls") + latch.countDown() + } + } + latch.await() + } + + @Test + fun testNoCache() { + flyweight(1).subscribe { i -> + flyweight(2).subscribe { j -> + assertNotEquals(i, j, "Should not use cache for calls with different keys") + latch.countDown() + } + } + latch.await() + } + + +}
\ No newline at end of file |