aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2018-09-11 13:37:12 -0400
committerAllan Wang <me@allanwang.ca>2018-09-11 13:37:12 -0400
commitd64c47f32931dce1c196f0b7a26ae5d1fd1af72e (patch)
treef11392808e64a2c507e02cf5ad90e255ba473e64 /core/src/main/kotlin/ca
parenta83dd51f545dda905194ea84caed6e2906b0f06f (diff)
downloadkau-d64c47f32931dce1c196f0b7a26ae5d1fd1af72e.tar.gz
kau-d64c47f32931dce1c196f0b7a26ae5d1fd1af72e.tar.bz2
kau-d64c47f32931dce1c196f0b7a26ae5d1fd1af72e.zip
Add more tests
Diffstat (limited to 'core/src/main/kotlin/ca')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/ui/ProgressAnimator.kt43
1 files changed, 30 insertions, 13 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/ui/ProgressAnimator.kt b/core/src/main/kotlin/ca/allanwang/kau/ui/ProgressAnimator.kt
index 39e8657..b98a47e 100644
--- a/core/src/main/kotlin/ca/allanwang/kau/ui/ProgressAnimator.kt
+++ b/core/src/main/kotlin/ca/allanwang/kau/ui/ProgressAnimator.kt
@@ -3,6 +3,7 @@ package ca.allanwang.kau.ui
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ValueAnimator
+import android.support.annotation.VisibleForTesting
import ca.allanwang.kau.kotlin.kauRemoveIf
/**
@@ -57,12 +58,17 @@ class ProgressAnimator private constructor() : ValueAnimator() {
}
private val animators: MutableList<ProgressDisposableAction> = mutableListOf()
- private val startActions: MutableList<ProgressDisposableRunnable> = mutableListOf()
- private val cancelActions: MutableList<ProgressDisposableRunnable> = mutableListOf()
- private val endActions: MutableList<ProgressDisposableRunnable> = mutableListOf()
+ @VisibleForTesting
+ internal val startActions: MutableList<ProgressDisposableRunnable> = mutableListOf()
+ @VisibleForTesting
+ internal val cancelActions: MutableList<ProgressDisposableRunnable> = mutableListOf()
+ @VisibleForTesting
+ internal val endActions: MutableList<ProgressDisposableRunnable> = mutableListOf()
var isCancelled: Boolean = false
private set
+ val animatorCount get() = animators.size
+
/**
* Converts an action to a disposable action
@@ -80,8 +86,10 @@ class ProgressAnimator private constructor() : ValueAnimator() {
return condition
}
- private fun MutableList<ProgressDisposableRunnable>.runAll() = kauRemoveIf { it() }
+ @VisibleForTesting
+ internal fun MutableList<ProgressDisposableRunnable>.runAll() = kauRemoveIf { it() }
+ @VisibleForTesting
internal fun apply(progress: Float) {
animators.kauRemoveIf { it(progress) }
}
@@ -109,16 +117,16 @@ class ProgressAnimator private constructor() : ValueAnimator() {
if (min >= max) {
throw IllegalArgumentException("Range animator must have min < max; currently min=$min, max=$max")
}
- withDisposableAnimator {
- when {
- it > max -> true
- it < min -> false
- else -> {
- action(progress(start, end, progress, min, max))
- false
- }
+ withDisposableAnimator {
+ when {
+ it > max -> true
+ it < min -> false
+ else -> {
+ action(progress(start, end, progress, min, max))
+ false
}
}
+ }
}
fun withPointAnimator(point: Float, action: ProgressAction) {
@@ -141,13 +149,22 @@ class ProgressAnimator private constructor() : ValueAnimator() {
fun withDisposableStartAction(action: ProgressDisposableRunnable) = startActions.add(action)
- fun withCancelAction(action:ProgressRunnable) = withDisposableCancelAction(action.asDisposable())
+ fun withCancelAction(action: ProgressRunnable) = withDisposableCancelAction(action.asDisposable())
fun withDisposableCancelAction(action: ProgressDisposableRunnable) = cancelActions.add(action)
fun withEndAction(action: ProgressRunnable) = withDisposableEndAction(action.asDisposable())
fun withDisposableEndAction(action: ProgressDisposableRunnable) = endActions.add(action)
+
+ fun reset() {
+ if (isRunning) cancel()
+ animators.clear()
+ startActions.clear()
+ cancelActions.clear()
+ endActions.clear()
+ isCancelled = false
+ }
}
private typealias ProgressAction = (Float) -> Unit