Index: test/codegen/expect/corelib/hash_set_test_01_multi.js |
diff --git a/test/codegen/expect/corelib/hash_set_test_01_multi.js b/test/codegen/expect/corelib/hash_set_test_01_multi.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..82cd938e62e69e5851fd297361d1a680a1a50f1e |
--- /dev/null |
+++ b/test/codegen/expect/corelib/hash_set_test_01_multi.js |
@@ -0,0 +1,347 @@ |
+dart_library.library('corelib/hash_set_test_01_multi', null, /* Imports */[ |
+ 'dart_sdk', |
+ 'expect' |
+], function load__hash_set_test_01_multi(exports, dart_sdk, expect) { |
+ 'use strict'; |
+ const core = dart_sdk.core; |
+ const _interceptors = dart_sdk._interceptors; |
+ const math = dart_sdk.math; |
+ const collection = dart_sdk.collection; |
+ const dart = dart_sdk.dart; |
+ const dartx = dart_sdk.dartx; |
+ const expect$ = expect.expect; |
+ const hash_set_test_01_multi = Object.create(null); |
+ let JSArrayOfint = () => (JSArrayOfint = dart.constFn(_interceptors.JSArray$(core.int)))(); |
+ let VoidToSet = () => (VoidToSet = dart.constFn(dart.functionType(core.Set, [])))(); |
+ let IterableToSet = () => (IterableToSet = dart.constFn(dart.functionType(core.Set, [core.Iterable])))(); |
+ let JSArrayOfObject = () => (JSArrayOfObject = dart.constFn(_interceptors.JSArray$(core.Object)))(); |
+ let JSArrayOfMutable = () => (JSArrayOfMutable = dart.constFn(_interceptors.JSArray$(hash_set_test_01_multi.Mutable)))(); |
+ let intToint = () => (intToint = dart.constFn(dart.definiteFunctionType(core.int, [core.int])))(); |
+ let intAndintToSet = () => (intAndintToSet = dart.constFn(dart.definiteFunctionType(core.Set, [core.int, core.int])))(); |
+ let intTobool = () => (intTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.int])))(); |
+ let dynamicTobool = () => (dynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic])))(); |
+ let FnAndFnTodynamic = () => (FnAndFnTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [VoidToSet(), IterableToSet()])))(); |
+ let FnTovoid = () => (FnTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [VoidToSet()])))(); |
+ let VoidToSet$ = () => (VoidToSet$ = dart.constFn(dart.definiteFunctionType(core.Set, [])))(); |
+ let IterableToSet$ = () => (IterableToSet$ = dart.constFn(dart.definiteFunctionType(core.Set, [core.Iterable])))(); |
+ let VoidToHashSet = () => (VoidToHashSet = dart.constFn(dart.definiteFunctionType(collection.HashSet, [])))(); |
+ let IterableToHashSet = () => (IterableToHashSet = dart.constFn(dart.definiteFunctionType(collection.HashSet, [core.Iterable])))(); |
+ let VoidToLinkedHashSet = () => (VoidToLinkedHashSet = dart.constFn(dart.definiteFunctionType(collection.LinkedHashSet, [])))(); |
+ let IterableToLinkedHashSet = () => (IterableToLinkedHashSet = dart.constFn(dart.definiteFunctionType(collection.LinkedHashSet, [core.Iterable])))(); |
+ let dynamicAnddynamicTobool = () => (dynamicAnddynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic, dart.dynamic])))(); |
+ let dynamicToint = () => (dynamicToint = dart.constFn(dart.definiteFunctionType(core.int, [dart.dynamic])))(); |
+ let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [])))(); |
+ hash_set_test_01_multi.testSet = function(newSet, newSetFrom) { |
+ function gen(from, to) { |
+ return core.Set.from(core.Iterable.generate(dart.notNull(to) - dart.notNull(from), dart.fn(n => dart.notNull(n) + dart.notNull(from), intToint()))); |
+ } |
+ dart.fn(gen, intAndintToSet()); |
+ function odd(n) { |
+ return (dart.notNull(n) & 1) == 1; |
+ } |
+ dart.fn(odd, intTobool()); |
+ function even(n) { |
+ return (dart.notNull(n) & 1) == 0; |
+ } |
+ dart.fn(even, intTobool()); |
+ { |
+ let set = newSet(); |
+ for (let i = 0; i < 256; i++) { |
+ set.add(i); |
+ } |
+ set.addAll(gen(256, 512)); |
+ set.addAll(newSetFrom(gen(512, 1000))); |
+ expect$.Expect.equals(1000, set.length); |
+ for (let i = 0; i < 1000; i = i + 2) |
+ set.remove(i); |
+ expect$.Expect.equals(500, set.length); |
+ expect$.Expect.isFalse(set.any(even)); |
+ expect$.Expect.isTrue(set.every(odd)); |
+ set.addAll(gen(0, 1000)); |
+ expect$.Expect.equals(1000, set.length); |
+ } |
+ { |
+ let set = newSet(); |
+ set.add(0); |
+ for (let i = 0; i < 1000; i++) { |
+ set.add(i + 1); |
+ set.remove(i); |
+ expect$.Expect.equals(1, set.length); |
+ } |
+ } |
+ { |
+ let set = newSet(); |
+ for (let i = 0; i < 1000; i++) { |
+ set.add(new hash_set_test_01_multi.BadHashCode()); |
+ } |
+ expect$.Expect.equals(1000, set.length); |
+ } |
+ { |
+ let set = newSet(); |
+ set.add(0); |
+ set.add(1); |
+ { |
+ let iter = set.iterator; |
+ iter.moveNext(); |
+ set.add(1); |
+ iter.moveNext(); |
+ set.add(2); |
+ expect$.Expect.throws(dart.bind(iter, 'moveNext'), dart.fn(e => core.Error.is(e), dynamicTobool())); |
+ } |
+ { |
+ let iter = set.iterator; |
+ expect$.Expect.equals(3, set.length); |
+ iter.moveNext(); |
+ iter.moveNext(); |
+ iter.moveNext(); |
+ set.add(3); |
+ expect$.Expect.throws(dart.bind(iter, 'moveNext'), dart.fn(e => core.Error.is(e), dynamicTobool())); |
+ } |
+ { |
+ let iter = set.iterator; |
+ iter.moveNext(); |
+ set.remove(1000); |
+ iter.moveNext(); |
+ let n = core.int._check(iter.current); |
+ set.remove(n); |
+ expect$.Expect.equals(n, iter.current); |
+ expect$.Expect.throws(dart.bind(iter, 'moveNext'), dart.fn(e => core.Error.is(e), dynamicTobool())); |
+ } |
+ { |
+ let iter = set.iterator; |
+ expect$.Expect.equals(3, set.length); |
+ iter.moveNext(); |
+ iter.moveNext(); |
+ iter.moveNext(); |
+ let n = core.int._check(iter.current); |
+ set.remove(n); |
+ expect$.Expect.equals(n, iter.current); |
+ expect$.Expect.throws(dart.bind(iter, 'moveNext'), dart.fn(e => core.Error.is(e), dynamicTobool())); |
+ } |
+ { |
+ let iter = set.iterator; |
+ expect$.Expect.equals(2, set.length); |
+ iter.moveNext(); |
+ let n = core.int._check(iter.current); |
+ set.add(n); |
+ iter.moveNext(); |
+ expect$.Expect.isTrue(set.contains(iter.current)); |
+ } |
+ { |
+ let set2 = newSet(); |
+ for (let value of set) { |
+ set2.add(value); |
+ } |
+ let iter = set.iterator; |
+ set.addAll(set2); |
+ iter.moveNext(); |
+ } |
+ } |
+ { |
+ for (let i = 1; i < 128; i++) { |
+ let set = newSetFrom(gen(0, i)); |
+ let iter = set.iterator; |
+ for (let j = 0; j < i; j++) { |
+ set.add(j); |
+ } |
+ iter.moveNext(); |
+ for (let j = 1; j < i; j++) { |
+ set.remove(j); |
+ } |
+ iter = set.iterator; |
+ set.add(0); |
+ iter.moveNext(); |
+ } |
+ } |
+ { |
+ let set = newSet(); |
+ set.add(null); |
+ expect$.Expect.equals(1, set.length); |
+ expect$.Expect.isTrue(set.contains(null)); |
+ expect$.Expect.isNull(set.first); |
+ expect$.Expect.isNull(set.last); |
+ set.add(null); |
+ expect$.Expect.equals(1, set.length); |
+ expect$.Expect.isTrue(set.contains(null)); |
+ set.remove(null); |
+ expect$.Expect.isTrue(set.isEmpty); |
+ expect$.Expect.isFalse(set.contains(null)); |
+ set = newSetFrom([null]); |
+ expect$.Expect.equals(1, set.length); |
+ expect$.Expect.isTrue(set.contains(null)); |
+ expect$.Expect.isNull(set.first); |
+ expect$.Expect.isNull(set.last); |
+ set.add(null); |
+ expect$.Expect.equals(1, set.length); |
+ expect$.Expect.isTrue(set.contains(null)); |
+ set.remove(null); |
+ expect$.Expect.isTrue(set.isEmpty); |
+ expect$.Expect.isFalse(set.contains(null)); |
+ set = newSetFrom(JSArrayOfint().of([1, 2, 3, null, 4, 5, 6])); |
+ expect$.Expect.equals(7, set.length); |
+ for (let i = 7; i < 128; i++) { |
+ set.add(i); |
+ } |
+ expect$.Expect.equals(128, set.length); |
+ expect$.Expect.isTrue(set.contains(null)); |
+ set.add(null); |
+ expect$.Expect.equals(128, set.length); |
+ expect$.Expect.isTrue(set.contains(null)); |
+ set.remove(null); |
+ expect$.Expect.equals(127, set.length); |
+ expect$.Expect.isFalse(set.contains(null)); |
+ } |
+ { |
+ let set = newSet(); |
+ set.addAll([]); |
+ expect$.Expect.isTrue(set.isEmpty); |
+ set.addAll(JSArrayOfint().of([1, 3, 2])); |
+ expect$.Expect.equals(3, set.length); |
+ expect$.Expect.isTrue(set.contains(1)); |
+ expect$.Expect.isTrue(set.contains(3)); |
+ expect$.Expect.isTrue(set.contains(2)); |
+ expect$.Expect.isFalse(set.contains(4)); |
+ set.clear(); |
+ expect$.Expect.isTrue(set.isEmpty); |
+ } |
+ { |
+ let set = newSetFrom(JSArrayOfint().of([1, 2, 3])); |
+ set.removeWhere(dart.fn(each => dart.equals(each, 2), dynamicTobool())); |
+ expect$.Expect.equals(2, set.length); |
+ expect$.Expect.isTrue(set.contains(1)); |
+ expect$.Expect.isFalse(set.contains(2)); |
+ expect$.Expect.isTrue(set.contains(3)); |
+ set.retainWhere(dart.fn(each => dart.equals(each, 3), dynamicTobool())); |
+ expect$.Expect.equals(1, set.length); |
+ expect$.Expect.isFalse(set.contains(1)); |
+ expect$.Expect.isFalse(set.contains(2)); |
+ expect$.Expect.isTrue(set.contains(3)); |
+ } |
+ { |
+ let set = newSet(); |
+ let m1a = new hash_set_test_01_multi.Mutable(1); |
+ let m1b = new hash_set_test_01_multi.Mutable(1); |
+ let m2a = new hash_set_test_01_multi.Mutable(2); |
+ let m2b = new hash_set_test_01_multi.Mutable(2); |
+ expect$.Expect.isNull(set.lookup(m1a)); |
+ expect$.Expect.isNull(set.lookup(m1b)); |
+ set.add(m1a); |
+ expect$.Expect.identical(m1a, set.lookup(m1a)); |
+ expect$.Expect.identical(m1a, set.lookup(m1b)); |
+ expect$.Expect.isNull(set.lookup(m2a)); |
+ expect$.Expect.isNull(set.lookup(m2b)); |
+ set.add(m2a); |
+ expect$.Expect.identical(m2a, set.lookup(m2a)); |
+ expect$.Expect.identical(m2a, set.lookup(m2b)); |
+ set.add(m2b); |
+ expect$.Expect.identical(m2a, set.lookup(m2a)); |
+ expect$.Expect.identical(m2a, set.lookup(m2b)); |
+ set.remove(m1a); |
+ set.add(m1b); |
+ expect$.Expect.identical(m1b, set.lookup(m1a)); |
+ expect$.Expect.identical(m1b, set.lookup(m1b)); |
+ set.add(1); |
+ expect$.Expect.identical(1, set.lookup(1.0)); |
+ set.add(-0.0); |
+ expect$.Expect.identical(-0.0, set.lookup(0.0)); |
+ } |
+ { |
+ let set = newSet(); |
+ let keys = []; |
+ for (let i = 65; i >= 2; --i) { |
+ keys[dartx.add](new hash_set_test_01_multi.Mutable(dart.asInt(math.pow(2, i)))); |
+ } |
+ for (let key of keys) { |
+ expect$.Expect.isTrue(set.add(key)); |
+ } |
+ for (let key of keys) { |
+ expect$.Expect.isTrue(set.contains(key)); |
+ } |
+ } |
+ }; |
+ dart.fn(hash_set_test_01_multi.testSet, FnAndFnTodynamic()); |
+ let const$; |
+ hash_set_test_01_multi.testIdentitySet = function(create) { |
+ let set = create(); |
+ set.add(1); |
+ set.add(2); |
+ set.add(1); |
+ expect$.Expect.equals(2, set.length); |
+ let complex = 4; |
+ complex = set.length == 2 ? (complex / 4)[dartx.truncate]() : 87; |
+ expect$.Expect.isTrue(set.contains(complex)); |
+ set.clear(); |
+ let constants = JSArrayOfObject().of([core.double.INFINITY, core.double.NAN, -0.0, 0.0, 42, "", null, false, true, const$ || (const$ = dart.const(core.Symbol.new('bif'))), hash_set_test_01_multi.testIdentitySet]); |
+ set.addAll(constants); |
+ expect$.Expect.equals(constants[dartx.length], set.length); |
+ for (let c of constants) { |
+ expect$.Expect.isTrue(set.contains(c), dart.str`constant: ${c}`); |
+ } |
+ expect$.Expect.isTrue(set.containsAll(constants), dart.str`constants: ${set}`); |
+ set.clear(); |
+ let m1 = new hash_set_test_01_multi.Mutable(1); |
+ let m2 = new hash_set_test_01_multi.Mutable(2); |
+ let m3 = new hash_set_test_01_multi.Mutable(3); |
+ let m4 = new hash_set_test_01_multi.Mutable(2); |
+ set.addAll(JSArrayOfMutable().of([m1, m2, m3, m4])); |
+ expect$.Expect.equals(4, set.length); |
+ expect$.Expect.equals(3, m3.hashCode); |
+ m3.id = 1; |
+ expect$.Expect.equals(1, m3.hashCode); |
+ expect$.Expect.isTrue(set.contains(m3)); |
+ expect$.Expect.isTrue(set.contains(m1)); |
+ set.remove(m3); |
+ expect$.Expect.isFalse(set.contains(m3)); |
+ expect$.Expect.isTrue(set.contains(m1)); |
+ expect$.Expect.identical(m1, set.lookup(m1)); |
+ expect$.Expect.identical(null, set.lookup(m3)); |
+ }; |
+ dart.fn(hash_set_test_01_multi.testIdentitySet, FnTovoid()); |
+ hash_set_test_01_multi.main = function() { |
+ hash_set_test_01_multi.testSet(dart.fn(() => core.Set.new(), VoidToSet$()), dart.fn(m => core.Set.from(m), IterableToSet$())); |
+ hash_set_test_01_multi.testSet(dart.fn(() => collection.HashSet.new(), VoidToHashSet()), dart.fn(m => collection.HashSet.from(m), IterableToHashSet())); |
+ hash_set_test_01_multi.testSet(dart.fn(() => collection.LinkedHashSet.new(), VoidToLinkedHashSet()), dart.fn(m => collection.LinkedHashSet.from(m), IterableToLinkedHashSet())); |
+ hash_set_test_01_multi.testIdentitySet(dart.fn(() => core.Set.identity(), VoidToSet$())); |
+ hash_set_test_01_multi.testIdentitySet(dart.fn(() => collection.HashSet.identity(), VoidToHashSet())); |
+ hash_set_test_01_multi.testIdentitySet(dart.fn(() => collection.LinkedHashSet.identity(), VoidToLinkedHashSet())); |
+ hash_set_test_01_multi.testIdentitySet(dart.fn(() => collection.HashSet.new({equals: dart.fn((x, y) => core.identical(x, y), dynamicAnddynamicTobool()), hashCode: dart.fn(x => core.identityHashCode(x), dynamicToint())}), VoidToHashSet())); |
+ hash_set_test_01_multi.testIdentitySet(dart.fn(() => collection.LinkedHashSet.new({equals: dart.fn((x, y) => core.identical(x, y), dynamicAnddynamicTobool()), hashCode: dart.fn(x => core.identityHashCode(x), dynamicToint())}), VoidToLinkedHashSet())); |
+ }; |
+ dart.fn(hash_set_test_01_multi.main, VoidTovoid()); |
+ hash_set_test_01_multi.BadHashCode = class BadHashCode extends core.Object { |
+ new() { |
+ this.id = (() => { |
+ let x = hash_set_test_01_multi.BadHashCode.idCounter; |
+ hash_set_test_01_multi.BadHashCode.idCounter = dart.notNull(x) + 1; |
+ return x; |
+ })(); |
+ } |
+ get hashCode() { |
+ return 42; |
+ } |
+ compareTo(other) { |
+ return dart.notNull(this.id) - dart.notNull(other.id); |
+ } |
+ }; |
+ dart.setSignature(hash_set_test_01_multi.BadHashCode, { |
+ constructors: () => ({new: dart.definiteFunctionType(hash_set_test_01_multi.BadHashCode, [])}), |
+ methods: () => ({compareTo: dart.definiteFunctionType(core.int, [hash_set_test_01_multi.BadHashCode])}) |
+ }); |
+ hash_set_test_01_multi.BadHashCode.idCounter = 0; |
+ hash_set_test_01_multi.Mutable = class Mutable extends core.Object { |
+ new(id) { |
+ this.id = id; |
+ } |
+ get hashCode() { |
+ return this.id; |
+ } |
+ ['=='](other) { |
+ return hash_set_test_01_multi.Mutable.is(other) && this.id == other.id; |
+ } |
+ }; |
+ dart.setSignature(hash_set_test_01_multi.Mutable, { |
+ constructors: () => ({new: dart.definiteFunctionType(hash_set_test_01_multi.Mutable, [core.int])}) |
+ }); |
+ // Exports: |
+ exports.hash_set_test_01_multi = hash_set_test_01_multi; |
+}); |