aboutsummaryrefslogtreecommitdiff
path: root/app/src/test/kotlin/com
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/test/kotlin/com')
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/facebook/FbRegexTest.kt8
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/facebook/FbUrlTest.kt27
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/rx/ResettableFlyweightTest.kt61
3 files changed, 96 insertions, 0 deletions
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<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