Skip to content

Commit 02ff87d

Browse files
authored
Merge pull request #2107 from TomerPacific/feature/migrate-iterable-to-contain-in-any-order-atLeast-one-entries-expectations-to-kotlin-test
Feature/migrate iterable to contain in any order at least one entries expectations to kotlin test
2 parents 5455269 + e7c26eb commit 02ff87d

File tree

8 files changed

+460
-406
lines changed

8 files changed

+460
-406
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package ch.tutteli.atrium.api.fluent.en_GB
2+
3+
import ch.tutteli.atrium.api.verbs.internal.expect
4+
import ch.tutteli.atrium.creating.Expect
5+
import ch.tutteli.atrium.specs.integration.AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest
6+
import kotlin.test.Test
7+
8+
class IterableToContainInAnyOrderAtLeast1EntriesExpectationsBuilderTest :
9+
AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest(
10+
functionDescription to Companion::toContainInAnyOrderEntries,
11+
functionDescription to Companion::toContainNullableEntries
12+
) {
13+
14+
companion object : IterableToContainSpecBase() {
15+
val functionDescription = "$toContain.$inAnyOrder.$atLeast(1).$entry/$entries"
16+
17+
18+
private fun toContainInAnyOrderEntries(
19+
expect: Expect<Iterable<Double>>,
20+
a: Expect<Double>.() -> Unit,
21+
aX: Array<out Expect<Double>.() -> Unit>
22+
): Expect<Iterable<Double>> =
23+
if (aX.isEmpty()) expect.toContain.inAnyOrder.atLeast(1).entry(a)
24+
else expect.toContain.inAnyOrder.atLeast(1).entries(a, *aX)
25+
26+
private fun toContainNullableEntries(
27+
expect: Expect<Iterable<Double?>>,
28+
a: (Expect<Double>.() -> Unit)?,
29+
aX: Array<out (Expect<Double>.() -> Unit)?>
30+
): Expect<Iterable<Double?>> =
31+
if (aX.isEmpty()) expect.toContain.inAnyOrder.atLeast(1).entry(a)
32+
else expect.toContain.inAnyOrder.atLeast(1).entries(a, *aX)
33+
}
34+
35+
@Suppress("AssignedValueIsNeverRead", "UNUSED_VALUE")
36+
@Test
37+
fun ambiguityTest() {
38+
var list: Expect<List<Number>> = expect(listOf(1))
39+
var nSet: Expect<Set<Number?>> = expect(setOf(1, null))
40+
var subList: Expect<ArrayList<Number>> = expect(arrayListOf(1))
41+
var star: Expect<Collection<*>> = expect(listOf(1, null))
42+
43+
list = list.toContain.inAnyOrder.atLeast(1).entry { toEqual(1) }
44+
nSet = nSet.toContain.inAnyOrder.atLeast(1).entry { toEqual(1) }
45+
subList = subList.toContain.inAnyOrder.atLeast(1).entry { toEqual(1) }
46+
star = star.toContain.inAnyOrder.atLeast(1).entry { toEqual(1) }
47+
48+
nSet = nSet.toContain.inAnyOrder.atLeast(1).entry(null)
49+
star = star.toContain.inAnyOrder.atLeast(1).entry(null)
50+
51+
list = list.toContain.inAnyOrder.atLeast(1).entries({ toEqual(1) }, { notToEqual(2) })
52+
nSet = nSet.toContain.inAnyOrder.atLeast(1).entries({ toEqual(1) }, null)
53+
subList = subList.toContain.inAnyOrder.atLeast(1).entries({ toEqual(1) }, { notToEqual(2) })
54+
star = star.toContain.inAnyOrder.atLeast(1).entries({ toEqual(1) }, null)
55+
56+
nSet = nSet.toContain.inAnyOrder.atLeast(1).entries(null, { toEqual(1) }, null)
57+
star = star.toContain.inAnyOrder.atLeast(1).entries(null, { toEqual(1) }, null)
58+
}
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package ch.tutteli.atrium.api.fluent.en_GB
2+
3+
import ch.tutteli.atrium.api.verbs.internal.expect
4+
import ch.tutteli.atrium.creating.Expect
5+
import ch.tutteli.atrium.specs.fun2
6+
import ch.tutteli.atrium.specs.integration.AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest
7+
import ch.tutteli.atrium.specs.withNullableSuffix
8+
import kotlin.test.Test
9+
10+
class IterableToContainInAnyOrderAtLeast1EntriesExpectationsShortcutTest :
11+
AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest(
12+
fun2(Expect<Iterable<Double>>::toContain),
13+
fun2(Expect<Iterable<Double?>>::toContain).withNullableSuffix(),
14+
) {
15+
@Suppress("AssignedValueIsNeverRead", "unused", "UNUSED_VALUE")
16+
@Test
17+
fun ambiguityTest() {
18+
var list: Expect<List<Number>> = expect(listOf(1))
19+
var nSet: Expect<Set<Number?>> = expect(setOf(1, null))
20+
var subList: Expect<ArrayList<Number>> = expect(arrayListOf(1))
21+
var star: Expect<Collection<*>> = expect(listOf(1, null))
22+
23+
list = list.toContain { toEqual(1) }
24+
nSet = nSet.toContain { toEqual(1) }
25+
subList = subList.toContain { toEqual(1) }
26+
star = star.toContain { toEqual(1) }
27+
28+
nSet = nSet.toContain(null)
29+
star = star.toContain(null)
30+
31+
list = list.toContain({ toEqual(1) }, { notToEqual(2) })
32+
nSet = nSet.toContain({ toEqual(1) }, null)
33+
subList = subList.toContain({ toEqual(1) }, { notToEqual(2) })
34+
star = star.toContain({ toEqual(1) }, null)
35+
36+
nSet = nSet.toContain(null, { toEqual(1) }, null)
37+
star = star.toContain(null, { toEqual(1) }, null)
38+
39+
40+
}
41+
42+
}

apis/fluent/atrium-api-fluent/src/commonTest/kotlin/ch/tutteli/atrium/api/fluent/en_GB/IterableToContainInAnyOrderAtLeast1EntriesExpectationsSpec.kt

Lines changed: 0 additions & 85 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package ch.tutteli.atrium.api.infix.en_GB
2+
3+
import ch.tutteli.atrium.api.verbs.internal.expect
4+
import ch.tutteli.atrium.creating.Expect
5+
import ch.tutteli.atrium.specs.integration.AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest
6+
import kotlin.test.Test
7+
8+
class IterableToContainInAnyOrderAtLeast1EntriesExpectationsBuilderTest :
9+
AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest(
10+
getToContainPair(),
11+
getToContainNullablePair(),
12+
) {
13+
companion object : IterableToContainSpecBase() {
14+
fun getToContainPair() =
15+
"$toContain $filler $inAnyOrder $atLeast 1 $inAnyOrderEntries" to Companion::toContainInAnyOrderEntries
16+
17+
private fun toContainInAnyOrderEntries(
18+
expect: Expect<Iterable<Double>>,
19+
a: Expect<Double>.() -> Unit,
20+
aX: Array<out Expect<Double>.() -> Unit>
21+
): Expect<Iterable<Double>> =
22+
if (aX.isEmpty()) expect toContain o inAny order atLeast 1 entry a
23+
else expect toContain o inAny order atLeast 1 the entries(a, *aX)
24+
25+
fun getToContainNullablePair() =
26+
"$toContain $filler $inAnyOrder $atLeast 1 $inAnyOrderEntries" to Companion::toContainNullableEntries
27+
28+
private fun toContainNullableEntries(
29+
expect: Expect<Iterable<Double?>>,
30+
a: (Expect<Double>.() -> Unit)?,
31+
aX: Array<out (Expect<Double>.() -> Unit)?>
32+
): Expect<Iterable<Double?>> =
33+
if (aX.isEmpty()) expect toContain o inAny order atLeast 1 entry a
34+
else expect toContain o inAny order atLeast 1 the entries(a, *aX)
35+
36+
}
37+
38+
@Suppress("AssignedValueIsNeverRead", "unused", "UNUSED_VALUE")
39+
@Test
40+
fun ambiguityTest() {
41+
var list: Expect<List<Number>> = expect(listOf(1))
42+
var nSet: Expect<Set<Number?>> = expect(setOf(1, null))
43+
var subList: Expect<ArrayList<Number>> = expect(arrayListOf(1))
44+
var star: Expect<Collection<*>> = expect(listOf(1, null))
45+
46+
list = list toContain o inAny order atLeast 1 entry { it toEqual 1 }
47+
nSet = nSet toContain o inAny order atLeast 1 entry { it toEqual 1 }
48+
subList = subList toContain o inAny order atLeast 1 entry { it toEqual 1 }
49+
star = star toContain o inAny order atLeast 1 entry { it toEqual 1 }
50+
51+
nSet = nSet toContain o inAny order atLeast 1 entry null
52+
star = star toContain o inAny order atLeast 1 entry null
53+
54+
list = list toContain o inAny order atLeast 1 the entries({ it toEqual 1 }, { it notToEqual 2 })
55+
nSet = nSet toContain o inAny order atLeast 1 the entries({ toEqual(1) }, null)
56+
subList = subList toContain o inAny order atLeast 1 the entries({ it toEqual 1 }, { it notToEqual 2 })
57+
star = star toContain o inAny order atLeast 1 the entries({ toEqual(1) }, null)
58+
59+
//TODO should work without cast, remove as soon as KT-6591 is fixed - (with Kotlin 1.4)
60+
nSet = nSet toContain null as Number?
61+
star = star toContain null as Number?
62+
nSet = nSet toContain entries(null, { it toEqual 1 }, null)
63+
star = star toContain entries(null, { it toEqual 1 }, null)
64+
}
65+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package ch.tutteli.atrium.api.infix.en_GB
2+
3+
import ch.tutteli.atrium.api.verbs.internal.expect
4+
import ch.tutteli.atrium.creating.Expect
5+
import ch.tutteli.atrium.specs.integration.AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest
6+
import kotlin.reflect.KFunction2
7+
import kotlin.test.Test
8+
9+
class IterableToContainInAnyOrderAtLeast1EntriesExpectationsShortcutTest :
10+
AbstractIterableToContainInAnyOrderAtLeast1EntriesExpectationsTest(
11+
getToContainShortcutPair(),
12+
getToContainNullableShortcutPair()
13+
) {
14+
companion object : IterableToContainSpecBase() {
15+
private val toContainShortcutFun: KFunction2<Expect<Iterable<Double>>, Expect<Double>.() -> Unit, Expect<Iterable<Double>>> =
16+
Expect<Iterable<Double>>::toContain
17+
18+
fun getToContainShortcutPair() = toContainShortcutFun.name to Companion::toContainInAnyOrderEntriesShortcut
19+
20+
private fun toContainInAnyOrderEntriesShortcut(
21+
expect: Expect<Iterable<Double>>,
22+
a: Expect<Double>.() -> Unit,
23+
aX: Array<out Expect<Double>.() -> Unit>
24+
): Expect<Iterable<Double>> =
25+
if (aX.isEmpty()) expect toContain (a)
26+
else expect toContain entries(a, *aX)
27+
28+
private val toContainEntriesFun: KFunction2<Expect<Iterable<Double?>>, (Expect<Double>.() -> Unit)?, Expect<Iterable<Double?>>> =
29+
Expect<Iterable<Double?>>::toContain
30+
31+
fun getToContainNullableShortcutPair() = toContainEntriesFun.name to Companion::toContainNullableEntriesShortcut
32+
33+
private fun toContainNullableEntriesShortcut(
34+
expect: Expect<Iterable<Double?>>,
35+
a: (Expect<Double>.() -> Unit)?,
36+
aX: Array<out (Expect<Double>.() -> Unit)?>
37+
): Expect<Iterable<Double?>> =
38+
if (aX.isEmpty()) expect toContain (a)
39+
else expect toContain (entries(a, *aX))
40+
}
41+
42+
@Suppress("AssignedValueIsNeverRead", "unused", "UNUSED_VALUE")
43+
@Test
44+
fun ambiguityTest() {
45+
var list: Expect<List<Number>> = expect(listOf(1))
46+
var nSet: Expect<Set<Number?>> = expect(setOf(1, null))
47+
var subList: Expect<ArrayList<Number>> = expect(arrayListOf(1))
48+
var star: Expect<Collection<*>> = expect(listOf(1, null))
49+
50+
list = list toContain { toEqual(1) }
51+
nSet = nSet toContain { toEqual(1) }
52+
subList = subList toContain { toEqual(1) }
53+
star = star toContain { toEqual(1) }
54+
55+
nSet = nSet toContain (null)
56+
star = star toContain (null)
57+
58+
list = list toContain entries({ toEqual(1) }, { notToEqual(2) })
59+
nSet = nSet toContain entries({ toEqual(1) }, null)
60+
subList = subList toContain entries({ toEqual(1) }, { notToEqual(2) })
61+
star = star toContain entries({ toEqual(1) }, null)
62+
63+
//TODO should work without cast, remove as soon as KT-6591 is fixed - (with Kotlin 1.4)
64+
nSet = nSet toContain null as Number?
65+
star = star toContain null as Number?
66+
nSet = nSet toContain entries(null, { toEqual(1) }, null)
67+
star = star toContain entries(null, { toEqual(1) }, null)
68+
}
69+
}

0 commit comments

Comments
 (0)