diff --git a/libraries/stdlib/test/collections/ArraysTest.kt b/libraries/stdlib/test/collections/ArraysTest.kt index ae7d1e3b5b3..c87e21297e6 100644 --- a/libraries/stdlib/test/collections/ArraysTest.kt +++ b/libraries/stdlib/test/collections/ArraysTest.kt @@ -360,6 +360,15 @@ class ArraysTest { assertArrayNotSameButEquals(longArrayOf(1, 2), longOnePlus(2), "LongArray.plus") } + test fun plusAssign() { + // lets use a mutable variable + var result = arrayOf("a") + result += "foo" + result += listOf("beer") + result += arrayOf("cheese", "wine") + assertArrayNotSameButEquals(arrayOf("a", "foo", "beer", "cheese", "wine"), result) + } + test fun first() { expect(1) { arrayOf(1, 2, 3).first() } expect(2) { arrayOf(1, 2, 3).first { it % 2 == 0 } } diff --git a/libraries/stdlib/test/collections/CollectionTest.kt b/libraries/stdlib/test/collections/CollectionTest.kt index a2496980d13..1f7d5d4803b 100644 --- a/libraries/stdlib/test/collections/CollectionTest.kt +++ b/libraries/stdlib/test/collections/CollectionTest.kt @@ -197,16 +197,11 @@ class CollectionTest { assertEquals(listOf(2, 4, 6), range) } - test fun plus() { + test fun plusElement() { val list = listOf("foo", "bar") - val list2 = list + "cheese" + val list2: List = list + "cheese" assertEquals(listOf("foo", "bar"), list) assertEquals(listOf("foo", "bar", "cheese"), list2) - - // lets use a mutable variable - var list3 = listOf("a", "b") - list3 += "c" - assertEquals(listOf("a", "b", "c"), list3) } test fun plusCollectionBug() { @@ -217,15 +212,27 @@ class CollectionTest { test fun plusCollection() { val a = listOf("foo", "bar") val b = listOf("cheese", "wine") - val list = a + b + val list: List = a + b + assertEquals(listOf("foo", "bar", "cheese", "wine"), list) + } + + test fun plusArray() { + val a = listOf("foo", "bar") + val b = arrayOf("cheese", "wine") + val list: List = a + b assertEquals(listOf("foo", "bar", "cheese", "wine"), list) - // lets use a mutable variable - var ml: List = a - ml += "beer" - ml += b - ml += "z" - assertEquals(listOf("foo", "bar", "beer", "cheese", "wine", "z"), ml) + } + + test fun plusAssign() { + // lets use a mutable variable of readonly list + var l: List = listOf("cheese") + val lOriginal = l + l += "foo" + l += listOf("beer") + l += arrayOf("cheese", "wine") + assertEquals(listOf("cheese", "foo", "beer", "cheese", "wine"), l) + assertTrue(l !== lOriginal) } test fun requireNoNulls() { diff --git a/libraries/stdlib/test/collections/IterableTests.kt b/libraries/stdlib/test/collections/IterableTests.kt index bf15b8413c4..a7cf970f667 100644 --- a/libraries/stdlib/test/collections/IterableTests.kt +++ b/libraries/stdlib/test/collections/IterableTests.kt @@ -281,4 +281,33 @@ abstract class IterableTests>(val data: T, val empty: T) { val result = data.joinToString(separator = "-") { it.toUpperCase() } assertEquals("FOO-BAR", result) } + + Test + fun plusElement() { + val result = data + "zoo" + "g" + assertEquals(listOf("foo", "bar", "zoo", "g"), result) + } + + Test + fun plusCollection() { + val result = data + listOf("zoo", "g") + assertEquals(listOf("foo", "bar", "zoo", "g"), result) + } + + Test + fun plusArray() { + val result = data + arrayOf("zoo", "g") + assertEquals(listOf("foo", "bar", "zoo", "g"), result) + } + + Test + fun plusAssign() { + // lets use a mutable variable + var result: Iterable = data + result += "foo" + result += listOf("beer") + result += arrayOf("cheese", "wine") + assertEquals(listOf("foo", "bar", "foo", "beer", "cheese", "wine"), result) + } + } diff --git a/libraries/stdlib/test/collections/SequenceTest.kt b/libraries/stdlib/test/collections/SequenceTest.kt index 9adbed14915..c8eb0bdfde0 100644 --- a/libraries/stdlib/test/collections/SequenceTest.kt +++ b/libraries/stdlib/test/collections/SequenceTest.kt @@ -132,37 +132,40 @@ public class SequenceTest { assertEquals("144, 233, 377, 610, 987", fibonacci().filter { it > 100 }.takeWhile { it < 1000 }.joinToString()) } - test fun plus() { + test fun plusElement() { val sequence = sequenceOf("foo", "bar") - val sequenceCheese = sequence + "cheese" + val sequenceCheese: Sequence = sequence + "cheese" assertEquals(listOf("foo", "bar", "cheese"), sequenceCheese.toList()) - - // lets use a mutable variable - var mi = sequenceOf("a", "b") - mi += "c" - assertEquals(listOf("a", "b", "c"), mi.toList()) } test fun plusCollection() { val a = sequenceOf("foo", "bar") val b = listOf("cheese", "wine") - val sequence = a + b + val sequence: Sequence = a + b assertEquals(listOf("foo", "bar", "cheese", "wine"), sequence.toList()) + } + test fun plusArray() { + val a = sequenceOf("foo", "bar") + val b = listOf("cheese", "wine") + val sequence: Sequence = a + b + assertEquals(listOf("foo", "bar", "cheese", "wine"), sequence.toList()) + } + + test fun plusAssign() { // lets use a mutable variable var ml = sequenceOf("a") - ml += a - ml += "beer" - ml += b - ml += "z" - assertEquals(listOf("a", "foo", "bar", "beer", "cheese", "wine", "z"), ml.toList()) + ml += "foo" + ml += listOf("beer") + ml += arrayOf("cheese", "wine") + assertEquals(listOf("a", "foo", "beer", "cheese", "wine"), ml.toList()) } test fun iterationOverSequence() { var s = "" for (i in sequenceOf(0, 1, 2, 3, 4, 5)) { - s = s + i.toString() + s += i.toString() } assertEquals("012345", s) } diff --git a/libraries/stdlib/test/collections/SetOperationsTest.kt b/libraries/stdlib/test/collections/SetOperationsTest.kt index 39f1dbe5518..7698e0a8ca6 100644 --- a/libraries/stdlib/test/collections/SetOperationsTest.kt +++ b/libraries/stdlib/test/collections/SetOperationsTest.kt @@ -32,4 +32,34 @@ class SetOperationsTest { assertEquals(listOf(1, 3, 5), listOf(1, 3, 5).intersect(listOf(1, 3, 5)).toList()) assertTrue(listOf().intersect(listOf(1)).none()) } + + test fun plusElement() { + val set = setOf("foo") + val result: Set = set + "bar" + "bar" + assertEquals(setOf("foo", "bar"), result) + } + + test fun plusCollection() { + val set = setOf("foo") + val result: Set = set + listOf("bar", "bar") + assertEquals(setOf("foo", "bar"), result) + } + + test fun plusArray() { + val set = setOf("foo") + val result: Set = set + arrayOf("foo", "bar") + assertEquals(setOf("foo", "bar"), result) + } + + test fun plusAssign() { + // lets use a mutable variable + var set = setOf("a") + val setOriginal = set + set += "foo" + set += listOf("beer") + set += arrayOf("cheese", "wine") + assertEquals(setOf("a", "foo", "beer", "cheese", "wine"), set) + assertTrue(set !== setOriginal) + } + } \ No newline at end of file