test cases
This commit is contained in:
parent
af993076f1
commit
df99b29fb3
@ -10,14 +10,16 @@ class LoopTest {
|
|||||||
fun givenLoop_whenBreak_thenComplete() {
|
fun givenLoop_whenBreak_thenComplete() {
|
||||||
var value = 0
|
var value = 0
|
||||||
|
|
||||||
for (i in 1..100) {
|
//break loop without label
|
||||||
|
for (i in 1..10) {
|
||||||
value = i
|
value = i
|
||||||
if (value == 30)
|
if (value == 3)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals(value, 30)
|
assertEquals(value, 3)
|
||||||
|
|
||||||
|
//break loop with label
|
||||||
outer_loop@ for (i in 1..10) {
|
outer_loop@ for (i in 1..10) {
|
||||||
for (j in 1..10) {
|
for (j in 1..10) {
|
||||||
value = i * j
|
value = i * j
|
||||||
@ -29,6 +31,31 @@ class LoopTest {
|
|||||||
assertEquals(value, 30)
|
assertEquals(value, 30)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenLoop_whenContinue_thenComplete() {
|
||||||
|
var processedList = mutableListOf<Int>()
|
||||||
|
//continue loop without label
|
||||||
|
for (i in 1..10) {
|
||||||
|
if (i == 3)
|
||||||
|
continue;
|
||||||
|
processedList.add(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(processedList.all { it -> it != 3 })
|
||||||
|
|
||||||
|
//continue loop with label
|
||||||
|
processedList = mutableListOf<Int>()
|
||||||
|
outer_loop@ for (i in 1..10) {
|
||||||
|
for (j in 1..10) {
|
||||||
|
if (i == 3)
|
||||||
|
continue@outer_loop;
|
||||||
|
processedList.add(i*j)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(processedList.size, 90)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun givenLambda_whenReturn_thenComplete() {
|
fun givenLambda_whenReturn_thenComplete() {
|
||||||
listOf(1, 2, 3, 4, 5).forEach {
|
listOf(1, 2, 3, 4, 5).forEach {
|
||||||
@ -44,18 +71,14 @@ class LoopTest {
|
|||||||
var result = mutableListOf<Int>();
|
var result = mutableListOf<Int>();
|
||||||
|
|
||||||
listOf(1, 2, 3, 4, 5).forEach lit@{
|
listOf(1, 2, 3, 4, 5).forEach lit@{
|
||||||
if (it == 3){
|
if (it == 3) {
|
||||||
// local return to the caller of the lambda, i.e. the forEach loop
|
// local return to the caller of the lambda, i.e. the forEach loop
|
||||||
return@lit
|
return@lit
|
||||||
}
|
}
|
||||||
result.add(it)
|
result.add(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(1 in result
|
assert(result.all { it -> it != 3 });
|
||||||
&& 2 in result
|
|
||||||
&& 4 in result
|
|
||||||
&& 5 in result)
|
|
||||||
assertFalse(3 in result)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -63,17 +86,36 @@ class LoopTest {
|
|||||||
var result = mutableListOf<Int>();
|
var result = mutableListOf<Int>();
|
||||||
|
|
||||||
listOf(1, 2, 3, 4, 5).forEach {
|
listOf(1, 2, 3, 4, 5).forEach {
|
||||||
if (it == 3){
|
if (it == 3) {
|
||||||
// local return to the caller of the lambda, i.e. the forEach loop
|
// local return to the caller of the lambda, i.e. the forEach loop
|
||||||
return@forEach
|
return@forEach
|
||||||
}
|
}
|
||||||
result.add(it)
|
result.add(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(1 in result
|
assert(result.all { it -> it != 3 });
|
||||||
&& 2 in result
|
}
|
||||||
&& 4 in result
|
|
||||||
&& 5 in result)
|
@Test
|
||||||
assertFalse(3 in result)
|
fun givenAnonymousFunction_return_thenComplete() {
|
||||||
|
var result = mutableListOf<Int>();
|
||||||
|
listOf(1, 2, 3, 4, 5).forEach(fun(element: Int) {
|
||||||
|
if (element == 3) return // local return to the caller of the anonymous fun, i.e. the forEach loop
|
||||||
|
result.add(element);
|
||||||
|
})
|
||||||
|
|
||||||
|
assert(result.all { it -> it != 3 });
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenAnonymousFunction_returnToLabel_thenComplete() {
|
||||||
|
var value = 0;
|
||||||
|
run loop@{
|
||||||
|
listOf(1, 2, 3, 4, 5).forEach {
|
||||||
|
value = it;
|
||||||
|
if (it == 3) return@loop // non-local return from the lambda passed to run
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assertEquals(value, 3)
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user