Implement reduceIndexedOrNull and reduceRightIndexedOrNull #KT-36866
This commit is contained in:
@@ -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 })
|
||||
|
||||
Reference in New Issue
Block a user