Provide getOrElse and getOrNull methods for indexed collections.

Breaking: elementAtOrElse is no longer inlined for Iterables and Sequences.
#KT-6952
This commit is contained in:
Ilya Gorbunov
2015-06-05 15:45:00 +03:00
parent 8cd978bfd8
commit 9618a3542f
3 changed files with 201 additions and 7 deletions
@@ -28,6 +28,22 @@ class ListSpecificTest {
assertEquals(listOf('C', 'A', 'D'), list.slice(iter))
}
Test fun getOr() {
expect("foo") { data.get(0) }
expect("bar") { data.get(1) }
fails { data.get(2) }
fails { data.get(-1) }
fails { empty.get(0) }
expect("foo") { data.getOrElse(0, {""} )}
expect("zoo") { data.getOrElse(-1, { "zoo" })}
expect("zoo") { data.getOrElse(2, { "zoo" })}
expect("zoo") { empty.getOrElse(0) { "zoo" }}
expect(null) { empty.getOrNull(0) }
}
Test fun lastIndex() {
assertEquals(-1, empty.lastIndex)
assertEquals(1, data.lastIndex)