Implement reduceIndexedOrNull and reduceRightIndexedOrNull #KT-36866

This commit is contained in:
Abduqodiri Qurbonzoda
2020-03-06 13:49:22 +03:00
parent b60633d79a
commit b1fac4e721
13 changed files with 964 additions and 0 deletions
+32
View File
@@ -1268,6 +1268,22 @@ class StringTest {
}
}
@Test fun reduceIndexedOrNull() = withOneCharSequenceArg { arg1 ->
// get the 3rd character
assertEquals('c', arg1("bacfd").reduceIndexedOrNull { index, v, c -> if (index == 2) c else v })
expect('c') {
"ab".reduceIndexedOrNull { index, acc, e ->
assertEquals(1, index)
assertEquals('a', acc)
assertEquals('b', e)
e + (e - acc)
}
}
expect(null, { arg1("").reduceIndexedOrNull { _, _, _ -> '\n' } })
}
@Test fun reduceRightIndexed() = withOneCharSequenceArg { arg1 ->
// get the 3rd character
assertEquals('c', arg1("bacfd").reduceRightIndexed { index, c, v -> if (index == 2) c else v })
@@ -1286,6 +1302,22 @@ class StringTest {
}
}
@Test fun reduceRightIndexedOrNull() = withOneCharSequenceArg { arg1 ->
// get the 3rd character
assertEquals('c', arg1("bacfd").reduceRightIndexedOrNull { index, c, v -> if (index == 2) c else v })
expect('c') {
"ab".reduceRightIndexedOrNull { index, e, acc ->
assertEquals(0, index)
assertEquals('b', acc)
assertEquals('a', e)
acc + (acc - e)
}
}
expect(null, { arg1("").reduceRightIndexedOrNull { _, _, _ -> '\n' } })
}
@Test fun reduce() = withOneCharSequenceArg { arg1 ->
// get the smallest character(by char value)
assertEquals('a', arg1("bacfd").reduce { v, c -> if (v > c) c else v })