| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| // Set is iterable. |
| var set = new Set([0, 1, 2, 3, 4, 5]); |
| var array = Array.from(set); |
| |
| shouldBe(array.length, set.size); |
| for (var i = 0; i < array.length; ++i) { |
| shouldBe(set.has(array[i]), true); |
| } |
| |
| // Map is iterable. |
| var map = new Map([ |
| [0, 0], |
| [1, 0], |
| [2, 0], |
| [3, 0], |
| [4, 0], |
| [5, 0] |
| ]); |
| var array = Array.from(map); |
| |
| shouldBe(array.length, map.size); |
| for (var i = 0; i < array.length; ++i) { |
| shouldBe(array[i][1], 0); |
| shouldBe(map.has(array[i][0]), true); |
| shouldBe(map.get(array[i][0]), 0); |
| } |
| |
| // String is iterable |
| var string = "Cocoa Cappuccino"; |
| var array = Array.from(string); |
| shouldBe(array.length, string.length); |
| for (var i = 0; i < array.length; ++i) { |
| shouldBe(array[i], string[i]); |
| } |
| |
| // Arguments is iterable |
| var argumentsGenerators = [ |
| function () { |
| return arguments; |
| }, |
| |
| function () { |
| 'use strict'; |
| return arguments; |
| }, |
| |
| function (a, b, c) { |
| return arguments; |
| }, |
| |
| function (a, b, c) { |
| 'use strict'; |
| return arguments; |
| } |
| ]; |
| |
| for (var gen of argumentsGenerators) { |
| var args = gen(1, 2, 3, 4, 5); |
| var array = Array.from(args); |
| shouldBe(array.length, args.length); |
| for (var i = 0; i < array.length; ++i) { |
| shouldBe(array[i], args[i]); |
| } |
| } |