diff --git a/js/js.translator/testData/maps.js b/js/js.translator/testData/maps.js index 1ba35684bbe..f286d985ed3 100644 --- a/js/js.translator/testData/maps.js +++ b/js/js.translator/testData/maps.js @@ -46,6 +46,12 @@ } } + function hashSetEquals(o) { + if (o === null || o === undefined || this.size() !== o.size()) return false; + + return this.containsAll_4fm7v2$(o); + } + /** @const */ var FUNCTION = "function"; var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ? @@ -686,6 +692,7 @@ }, /** @lends {Kotlin.LinkedHashSet.prototype} */ { + equals_za3rmp$: hashSetEquals, size: function () { return this.map.size() }, @@ -753,6 +760,7 @@ }, /** @lends {Kotlin.AbstractPrimitiveHashSet.prototype} */ { + equals_za3rmp$: hashSetEquals, size: function () { return this.$size; }, @@ -898,27 +906,7 @@ return h; }; - this.equals_za3rmp$ = function (o) { - if (o === null || o === undefined) return false; - if (this.size() === o.size()) { - var iter1 = this.iterator(); - var iter2 = o.iterator(); - while (true) { - var hn1 = iter1.hasNext(); - var hn2 = iter2.hasNext(); - if (hn1 != hn2) return false; - if (!hn2) { - return true; - } - else { - var o1 = iter1.next(); - var o2 = iter2.next(); - if (!Kotlin.equals(o1, o2)) return false; - } - } - } - return false; - }; + this.equals_za3rmp$ = hashSetEquals; this.toString = function () { var builder = "["; diff --git a/libraries/stdlib/test/js/SetJsTest.kt b/libraries/stdlib/test/js/SetJsTest.kt index 7a583e5627e..ef3692978fd 100644 --- a/libraries/stdlib/test/js/SetJsTest.kt +++ b/libraries/stdlib/test/js/SetJsTest.kt @@ -17,7 +17,7 @@ class ComplexSetJsTest : SetJsTest() { assertEquals(data, set) } - /*Test*/ override fun constructors() { + Test override fun constructors() { doTest() } @@ -29,7 +29,7 @@ class ComplexSetJsTest : SetJsTest() { class PrimitiveSetJsTest : SetJsTest() { override fun createEmptyMutableSet(): MutableSet = HashSet() override fun createEmptyMutableSetWithNullableValues(): MutableSet = HashSet() - /*Test*/ override fun constructors() { + Test override fun constructors() { HashSet() HashSet(3) HashSet(3, 0.5f) @@ -70,6 +70,13 @@ abstract class SetJsTest { assertTrue(empty.isEmpty()) } + Test fun equals() { + assertNotEquals(createEmptyMutableSet(), data) + assertNotEquals(data, empty) + assertEquals(createEmptyMutableSet(), empty) + assertEquals(createTestMutableSetReversed(), data) + } + Test fun contains() { assertTrue(data.contains("foo")) assertTrue(data.contains("bar")) @@ -209,4 +216,10 @@ abstract class SetJsTest { set.add("bar") return set } + fun createTestMutableSetReversed(): MutableSet { + val set = createEmptyMutableSet() + set.add("bar") + set.add("foo") + return set + } }