aboutsummaryrefslogtreecommitdiff
path: root/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt')
-rw-r--r--app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt38
1 files changed, 37 insertions, 1 deletions
diff --git a/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt b/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt
index fb2b2a45..2af98eda 100644
--- a/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt
+++ b/app/src/test/kotlin/com/pitchedapps/frost/internal/Internal.kt
@@ -1,13 +1,18 @@
package com.pitchedapps.frost.internal
-import com.pitchedapps.frost.facebook.*
+import com.pitchedapps.frost.facebook.FB_USER_MATCHER
+import com.pitchedapps.frost.facebook.FbItem
+import com.pitchedapps.frost.facebook.get
import com.pitchedapps.frost.facebook.requests.RequestAuth
import com.pitchedapps.frost.facebook.requests.getAuth
import com.pitchedapps.frost.utils.frostJsoup
+import io.reactivex.Completable
import org.junit.Assume
+import org.junit.Test
import java.io.File
import java.io.FileInputStream
import java.util.*
+import java.util.concurrent.TimeUnit
import kotlin.reflect.full.starProjectedType
import kotlin.test.assertEquals
import kotlin.test.assertTrue
@@ -74,4 +79,35 @@ fun Any.assertComponentsNotEmpty() {
fun <T : Comparable<T>> List<T>.assertDescending(tag: String) {
assertEquals(sortedDescending(), this, "$tag not sorted in descending order")
+}
+
+interface CompletableCallback {
+ fun onComplete()
+ fun onError(message: String)
+}
+
+inline fun concurrentTest(crossinline caller: (callback: CompletableCallback) -> Unit) {
+ val result = Completable.create { emitter ->
+ caller(object : CompletableCallback {
+ override fun onComplete() = emitter.onComplete()
+ override fun onError(message: String) = emitter.onError(Throwable(message))
+ })
+ }.blockingGet(5, TimeUnit.SECONDS)
+ if (result != null)
+ throw RuntimeException("Concurrent fail: ${result.message}")
+}
+
+class InternalTest {
+ @Test
+ fun concurrentTest() = try {
+ concurrentTest { result ->
+ Thread().run {
+ Thread.sleep(100)
+ result.onError("Intentional fail")
+ }
+ }
+ fail("Did not throw exception")
+ } catch (e: Exception) {
+ // pass
+ }
} \ No newline at end of file