From fd5f2a82eb968b5d50f586925ebb705249062446 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Wed, 10 Jan 2018 22:13:28 -0500 Subject: 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 --- .../com/pitchedapps/frost/facebook/FbRegexTest.kt | 8 +++ .../com/pitchedapps/frost/facebook/FbUrlTest.kt | 27 ++++++++++ .../frost/rx/ResettableFlyweightTest.kt | 61 ++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt (limited to 'app/src/test') diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt index a79ccf3f..08853466 100644 --- a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt +++ b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt @@ -49,4 +49,12 @@ class FbRegexTest { val data = "\"uri\":\"$url\"}" assertEquals(url, FB_JSON_URL_MATCHER.find(data)[1]) } + + @Test + fun imageIdRegex() { + val id = 123456L + val img = "https://scontent-yyz1-1.xx.fbcdn.net/v/t31.0-8/fr/cp0/e15/q65/89056_${id}_98239_o.jpg" + assertEquals(id, FB_IMAGE_ID_MATCHER.find(img)[1]?.toLongOrNull()) + } + } \ No newline at end of file diff --git a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt index 62b7cac2..79d5ea64 100644 --- a/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt +++ b/app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt @@ -1,7 +1,10 @@ package com.pitchedapps.frost.facebook +import com.pitchedapps.frost.utils.isImageUrl import org.junit.Test import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertTrue /** @@ -57,4 +60,28 @@ class FbUrlTest { assertFbFormat(expected, url) } + + @Test + fun imageRegex() { + arrayOf( + "https://scontent-yyz1-1.xx.fbcdn.net/v/t1.0-9/fr/cp0/e15/q65/229_546131_836546862_n.jpg?efg=e343J9&oh=d4245b1&oe=5453", + "/photo/view_full_size/?fbid=1523&ref_component=mbasic_photo_permalink&ref_page=%2Fwap%2Fphoto.php&refid=153&_ft_=...", + "#!/photo/view_full_size/?fbid=1523&ref_component=mbasic_photo_permalink&ref_page=%2Fwap%2Fphoto.php&refid=153&_ft_=..." + ).forEach { + assertTrue(it.isImageUrl, "Failed to match image for $it") + } + } + + @Test + fun antiImageRegex() { + arrayOf( + "http...fbcdn.net...mp4", + "/photo/...png", + "https://www.google.ca" + ).forEach { + assertFalse(it.isImageUrl, "Should not have matched image for $it") + } + + } + } \ No newline at end of file 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() { + 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 -- cgit v1.2.3