From ba5aefcc031f85bf6858de6ca133155c64671c7f Mon Sep 17 00:00:00 2001
From: i-walker <46971368+i-walker@users.noreply.github.com>
Date: Wed, 29 Jun 2022 20:22:18 +0200
Subject: [PATCH 1/4] deprecate arrow-core-test
---
.../kotlin/arrow/core/test/Platform.kt | 6 +++
.../kotlin/arrow/core/test/UnitSpec.kt | 22 +++++++++++
.../arrow/core/test/concurrency/SideEffect.kt | 5 +++
.../arrow/core/test/generators/Generators.kt | 39 ++++++++++++++++++-
.../arrow/core/test/generators/utils.kt | 3 ++
.../kotlin/arrow/core/test/laws/FxLaws.kt | 6 +++
.../kotlin/arrow/core/test/laws/Law.kt | 3 ++
.../kotlin/arrow/core/test/laws/MonoidLaws.kt | 7 ++++
.../arrow/core/test/laws/SemigroupLaws.kt | 4 ++
.../arrow/core/test/laws/SemiringLaws.kt | 3 ++
.../kotlin/arrow.core/test/Platform-js.kt | 5 +++
.../kotlin/arrow/core/test/Platform-jvm.kt | 5 +++
.../core/test/generators/GeneratorsJvm.kt | 3 ++
.../kotlin/arrow/core/test/Platform-native.kt | 5 +++
.../kotlin/arrow/fx/coroutines/ArrowFxSpec.kt | 2 +
.../kotlin/arrow/fx/coroutines/predef-test.kt | 26 +++++++++++++
16 files changed, 143 insertions(+), 1 deletion(-)
diff --git a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/Platform.kt b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/Platform.kt
index 4ae1873095f..1818b04830c 100644
--- a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/Platform.kt
+++ b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/Platform.kt
@@ -1,8 +1,14 @@
package arrow.core.test
+import arrow.core.test.concurrency.deprecateArrowTestModules
+
+@Deprecated(deprecateArrowTestModules)
public expect fun isJvm(): Boolean
+@Deprecated(deprecateArrowTestModules)
public expect fun isJs(): Boolean
+@Deprecated(deprecateArrowTestModules)
public expect fun isNative(): Boolean
+@Deprecated(deprecateArrowTestModules)
public fun stackSafeIteration(): Int =
if (isJvm()) 500_000 else 1000
diff --git a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/UnitSpec.kt b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/UnitSpec.kt
index 3896f9f4580..bb44b0620dc 100644
--- a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/UnitSpec.kt
+++ b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/UnitSpec.kt
@@ -1,6 +1,7 @@
package arrow.core.test
import arrow.core.*
+import arrow.core.test.concurrency.deprecateArrowTestModules
import arrow.core.test.generators.unit
import arrow.core.test.laws.Law
import io.kotest.core.names.TestName
@@ -22,17 +23,21 @@ import kotlin.math.max
/**
* Base class for unit tests
*/
+@Deprecated(deprecateArrowTestModules)
public abstract class UnitSpec(
public val iterations: Int = 250,
public val maxDepth: Int = 15,
spec: UnitSpec.() -> Unit = {}
) : StringSpec() {
+ @Deprecated(deprecateArrowTestModules)
public constructor(spec: UnitSpec.() -> Unit) : this(250, 15, spec)
+ @Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.list(gen: Gen, range: IntRange = 0..maxDepth): Arb> =
Arb.KList(gen, range)
+ @Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.nonEmptyList(arb: Arb, depth: Int = maxDepth): Arb> {
return Arb.list(arb, 1..max(1, depth))
.map { Option.fromNullable(it.toNonEmptyListOrNull()) }
@@ -40,13 +45,16 @@ public abstract class UnitSpec(
.map { it.value }
}
+ @Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.sequence(arbA: Arb, range: IntRange = 0..maxDepth): Arb> =
Arb.list(arbA, range).map { it.asSequence() }
@JvmOverloads
+ @Deprecated(deprecateArrowTestModules)
public inline fun Arb.Companion.array(gen: Arb, range: IntRange = 0..maxDepth): Arb> =
Arb.list(gen, range).map { it.toTypedArray() }
+ @Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.map(
keyArb: Arb,
valueArb: Arb,
@@ -59,6 +67,7 @@ public abstract class UnitSpec(
spec()
}
+ @Deprecated(deprecateArrowTestModules)
public fun testLaws(vararg laws: List): Unit = laws
.flatMap { list: List -> list.asIterable() }
.distinctBy { law: Law -> law.name }
@@ -68,6 +77,7 @@ public abstract class UnitSpec(
}
}
+ @Deprecated(deprecateArrowTestModules)
public fun testLaws(prefix: String, vararg laws: List): Unit = laws
.flatMap { list: List -> list.asIterable() }
.distinctBy { law: Law -> law.name }
@@ -77,9 +87,11 @@ public abstract class UnitSpec(
}
}
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(property: suspend PropertyContext.() -> Unit): PropertyContext =
checkAll(iterations, Arb.unit()) { property() }
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
genA: Arb,
property: suspend PropertyContext.(A) -> Unit
@@ -90,6 +102,7 @@ public abstract class UnitSpec(
property
)
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
genA: Arb,
genB: Arb,
@@ -102,6 +115,7 @@ public abstract class UnitSpec(
property
)
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
genA: Arb,
genB: Arb,
@@ -116,6 +130,7 @@ public abstract class UnitSpec(
property
)
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
genA: Arb,
genB: Arb,
@@ -132,6 +147,7 @@ public abstract class UnitSpec(
property
)
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
genA: Arb,
genB: Arb,
@@ -150,6 +166,7 @@ public abstract class UnitSpec(
property
)
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
genA: Arb,
genB: Arb,
@@ -170,6 +187,7 @@ public abstract class UnitSpec(
property
)
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
gena: Arb,
genb: Arb,
@@ -185,6 +203,7 @@ public abstract class UnitSpec(
}
}
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
gena: Arb,
genb: Arb,
@@ -201,6 +220,7 @@ public abstract class UnitSpec(
}
}
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
gena: Arb,
genb: Arb,
@@ -218,6 +238,7 @@ public abstract class UnitSpec(
}
}
+ @Deprecated(deprecateArrowTestModules)
public suspend fun checkAll(
gena: Arb,
genb: Arb,
@@ -243,6 +264,7 @@ public abstract class UnitSpec(
}
}
+ @Deprecated(deprecateArrowTestModules)
public suspend fun forFew(
iterations: Int,
property: suspend PropertyContext.(Unit) -> Unit
diff --git a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/concurrency/SideEffect.kt b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/concurrency/SideEffect.kt
index 2f528121350..d643af6395e 100644
--- a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/concurrency/SideEffect.kt
+++ b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/concurrency/SideEffect.kt
@@ -1,7 +1,12 @@
package arrow.core.test.concurrency
+@Deprecated(deprecateArrowTestModules)
public data class SideEffect(var counter: Int = 0) {
+ @Deprecated(deprecateArrowTestModules)
public fun increment() {
counter++
}
}
+
+public const val deprecateArrowTestModules: String =
+ "arrow test modules are being deprecated in favour of kotest-arrow-extension libraries"
diff --git a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/generators/Generators.kt b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/generators/Generators.kt
index 31bbd71946b..49c19601228 100644
--- a/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/generators/Generators.kt
+++ b/arrow-libs/core/arrow-core-test/src/commonMain/kotlin/arrow/core/test/generators/Generators.kt
@@ -16,6 +16,7 @@ import arrow.core.Tuple9
import arrow.core.Validated
import arrow.core.left
import arrow.core.right
+import arrow.core.test.concurrency.deprecateArrowTestModules
import arrow.core.toOption
import io.kotest.property.Arb
import io.kotest.property.arbitrary.bind
@@ -37,51 +38,65 @@ import io.kotest.property.arbitrary.string
import kotlin.Result.Companion.failure
import kotlin.Result.Companion.success
import kotlin.math.abs
-
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.functionAToB(arb: Arb): Arb<(A) -> B> =
arb.map { b: B -> { _: A -> b } }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.functionAAToA(arb: Arb): Arb<(A, A) -> A> =
arb.map { a: A -> { _: A, _: A -> a } }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.functionBAToB(arb: Arb): Arb<(B, A) -> B> =
arb.map { b: B -> { _: B, _: A -> b } }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.functionABToB(arb: Arb): Arb<(A, B) -> B> =
arb.map { b: B -> { _: A, _: B -> b } }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.functionToA(arb: Arb): Arb<() -> A> =
arb.map { a: A -> { a } }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.throwable(): Arb =
Arb.of(listOf(RuntimeException(), NoSuchElementException(), IllegalArgumentException()))
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.result(arbA: Arb): Arb> =
Arb.choice(arbA.map(::success), throwable().map(::failure))
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.doubleSmall(): Arb =
Arb.numericDoubles(from = 0.0, to = 100.0)
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.floatSmall(): Arb =
Arb.numericFloats(from = 0F, to = 100F)
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.intSmall(factor: Int = 10000): Arb =
Arb.int((Int.MIN_VALUE / factor)..(Int.MAX_VALUE / factor))
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.byteSmall(): Arb =
Arb.byte(min = (Byte.MIN_VALUE / 10).toByte(), max = (Byte.MAX_VALUE / 10).toByte())
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.shortSmall(): Arb {
val range = (Short.MIN_VALUE / 1000)..(Short.MAX_VALUE / 1000)
return Arb.short().filter { it in range }
}
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.longSmall(): Arb =
Arb.long((Long.MIN_VALUE / 100000L)..(Long.MAX_VALUE / 100000L))
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple4(arbA: Arb, arbB: Arb, arbC: Arb, arbD: Arb): Arb> =
Arb.bind(arbA, arbB, arbC, arbD, ::Tuple4)
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple5(
arbA: Arb,
arbB: Arb,
@@ -91,6 +106,7 @@ public fun Arb.Companion.tuple5(
): Arb> =
Arb.bind(arbA, arbB, arbC, arbD, arbE, ::Tuple5)
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple6(
arbA: Arb,
arbB: Arb,
@@ -101,6 +117,7 @@ public fun Arb.Companion.tuple6(
): Arb> =
Arb.bind(arbA, arbB, arbC, arbD, arbE, arbF, ::Tuple6)
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple7(
arbA: Arb,
arbB: Arb,
@@ -112,6 +129,7 @@ public fun Arb.Companion.tuple7(
): Arb> =
Arb.bind(arbA, arbB, arbC, arbD, arbE, arbF, arbG, ::Tuple7)
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple8(
arbA: Arb,
arbB: Arb,
@@ -129,6 +147,7 @@ public fun Arb.Companion.tuple8(
Tuple8(a, b, c, d, e, f, g, h)
}
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple9(
arbA: Arb,
arbB: Arb,
@@ -147,6 +166,7 @@ public fun Arb.Companion.tuple9(
Tuple9(a, b, c, d, e, f, g, h, i)
}
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.tuple10(
arbA: Arb,
arbB: Arb,
@@ -166,8 +186,10 @@ public fun Arb.Companion.tuple10(
Tuple10(a, b, c, d, e, f, g, h, i, j)
}
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.nonZeroInt(): Arb = Arb.int().filter { it != 0 }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.intPredicate(): Arb<(Int) -> Boolean> =
Arb.nonZeroInt().flatMap { num ->
val absNum = abs(num)
@@ -181,37 +203,48 @@ public fun Arb.Companion.intPredicate(): Arb<(Int) -> Boolean> =
)
}
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.endo(arb: Arb): Arb> = arb.map { a: A -> Endo { a } }
+@Deprecated(deprecateArrowTestModules)
public fun Arb.Companion.option(arb: Arb): Arb