diff options
author | Allan Wang <me@allanwang.ca> | 2018-09-11 13:37:12 -0400 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2018-09-11 13:37:12 -0400 |
commit | d64c47f32931dce1c196f0b7a26ae5d1fd1af72e (patch) | |
tree | f11392808e64a2c507e02cf5ad90e255ba473e64 /core/src/main/kotlin/ca | |
parent | a83dd51f545dda905194ea84caed6e2906b0f06f (diff) | |
download | kau-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.kt | 43 |
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 |