JS stdlib: fixed Set::equals.

This commit is contained in:
Zalim Bashorov
2014-12-23 19:28:25 +03:00
parent 217e25855e
commit 7579471859
2 changed files with 24 additions and 23 deletions
+9 -21
View File
@@ -46,6 +46,12 @@
} }
} }
function hashSetEquals(o) {
if (o === null || o === undefined || this.size() !== o.size()) return false;
return this.containsAll_4fm7v2$(o);
}
/** @const */ /** @const */
var FUNCTION = "function"; var FUNCTION = "function";
var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ? var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ?
@@ -686,6 +692,7 @@
}, },
/** @lends {Kotlin.LinkedHashSet.prototype} */ /** @lends {Kotlin.LinkedHashSet.prototype} */
{ {
equals_za3rmp$: hashSetEquals,
size: function () { size: function () {
return this.map.size() return this.map.size()
}, },
@@ -753,6 +760,7 @@
}, },
/** @lends {Kotlin.AbstractPrimitiveHashSet.prototype} */ /** @lends {Kotlin.AbstractPrimitiveHashSet.prototype} */
{ {
equals_za3rmp$: hashSetEquals,
size: function () { size: function () {
return this.$size; return this.$size;
}, },
@@ -898,27 +906,7 @@
return h; return h;
}; };
this.equals_za3rmp$ = function (o) { this.equals_za3rmp$ = hashSetEquals;
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.toString = function () { this.toString = function () {
var builder = "["; var builder = "[";
+15 -2
View File
@@ -17,7 +17,7 @@ class ComplexSetJsTest : SetJsTest() {
assertEquals(data, set) assertEquals(data, set)
} }
/*Test*/ override fun constructors() { Test override fun constructors() {
doTest<String>() doTest<String>()
} }
@@ -29,7 +29,7 @@ class ComplexSetJsTest : SetJsTest() {
class PrimitiveSetJsTest : SetJsTest() { class PrimitiveSetJsTest : SetJsTest() {
override fun createEmptyMutableSet(): MutableSet<String> = HashSet() override fun createEmptyMutableSet(): MutableSet<String> = HashSet()
override fun createEmptyMutableSetWithNullableValues(): MutableSet<String?> = HashSet() override fun createEmptyMutableSetWithNullableValues(): MutableSet<String?> = HashSet()
/*Test*/ override fun constructors() { Test override fun constructors() {
HashSet<String>() HashSet<String>()
HashSet<String>(3) HashSet<String>(3)
HashSet<String>(3, 0.5f) HashSet<String>(3, 0.5f)
@@ -70,6 +70,13 @@ abstract class SetJsTest {
assertTrue(empty.isEmpty()) assertTrue(empty.isEmpty())
} }
Test fun equals() {
assertNotEquals(createEmptyMutableSet(), data)
assertNotEquals(data, empty)
assertEquals(createEmptyMutableSet(), empty)
assertEquals(createTestMutableSetReversed(), data)
}
Test fun contains() { Test fun contains() {
assertTrue(data.contains("foo")) assertTrue(data.contains("foo"))
assertTrue(data.contains("bar")) assertTrue(data.contains("bar"))
@@ -209,4 +216,10 @@ abstract class SetJsTest {
set.add("bar") set.add("bar")
return set return set
} }
fun createTestMutableSetReversed(): MutableSet<String> {
val set = createEmptyMutableSet()
set.add("bar")
set.add("foo")
return set
}
} }