Polishing.

Unroll extension to avoid JvmOverload usage.

Closes #2227
This commit is contained in:
Mark Paluch
2022-09-21 15:29:19 +02:00
parent 89f4c7e238
commit 899dca4bc1
2 changed files with 41 additions and 8 deletions

View File

@@ -256,16 +256,34 @@ fun <K : Any, HK : Any, HV : Any> ReactiveStreamOperations<K, HK, HV>.reverseRan
* @author Sebastien Deleuze
* @since 2.2
*/
inline fun <K : Any, reified V : Any> ReactiveStreamOperations<K, *, *>.reverseRangeWithTypeAsFlow(key: K, range: Range<String>, limit: Limit = Limit.unlimited()): Flow<ObjectRecord<K, V>> =
reverseRange(V::class.java, key, range, limit).asFlow()
inline fun <K : Any, reified V : Any> ReactiveStreamOperations<K, *, *>.reverseRangeWithTypeAsFlow(
key: K,
range: Range<String>,
limit: Limit = Limit.unlimited()
): Flow<ObjectRecord<K, V>> =
reverseRange(V::class.java, key, range, limit).asFlow()
/**
* Coroutines variant of [ReactiveStreamOperations.trim].
*
* @author Mark Paluch
* @author Quantum64@github
* @since 2.2
* @author Quantum64
* @since 2.7.4
*/
@JvmOverloads // Maintain compatibility with versions <= 2.6.0
suspend fun <K : Any, HK : Any, HV : Any> ReactiveStreamOperations<K, HK, HV>.trimAndAwait(key: K, count: Long, approximateTrimming: Boolean = false): Long =
trim(key, count, approximateTrimming).awaitSingle()
suspend fun <K : Any, HK : Any, HV : Any> ReactiveStreamOperations<K, HK, HV>.trimAndAwait(
key: K,
count: Long
): Long =
trim(key, count).awaitSingle()
/**
* Coroutines variant of [ReactiveStreamOperations.trim].
*
* @author Quantum64
* @since 2.7.4
*/
suspend fun <K : Any, HK : Any, HV : Any> ReactiveStreamOperations<K, HK, HV>.trimAndAwait(
key: K,
count: Long,
approximateTrimming: Boolean
): Long =
trim(key, count, approximateTrimming).awaitSingle()

View File

@@ -492,4 +492,19 @@ class ReactiveStreamOperationsExtensionsUnitTests {
operations.trim("foo", 1)
}
}
@Test // GH-2227
fun trimApproximate() {
val operations = mockk<ReactiveStreamOperations<String, String, String>>()
every { operations.trim(any(), any(), any()) } returns Mono.just(1)
runBlocking {
assertThat(operations.trimAndAwait("foo", 1, true)).isEqualTo(1)
}
verify {
operations.trim("foo", 1, true)
}
}
}