iterator-functions.js   [plain text]


function test(actual, expected) {
    if (actual !== expected)
        throw new Error('bad value: ' + actual);
}

test(Array.prototype[Symbol.iterator], Array.prototype.values);
test(Map.prototype[Symbol.iterator], Map.prototype.entries);
test(Set.prototype[Symbol.iterator], Set.prototype.values);

function argumentsTests(values) {
    test(function () {
        return arguments[Symbol.iterator];
    }(), values);

    test(function (a, b, c) {
        return arguments[Symbol.iterator];
    }(), values);

    test(function () {
        'use strict';
        return arguments[Symbol.iterator];
    }(), values);

    test(function (a, b, c) {
        'use strict';
        return arguments[Symbol.iterator];
    }(), values);
}

argumentsTests(Array.prototype.values);
var arrayValues = Array.prototype.values;
Array.prototype.values = null;
argumentsTests(arrayValues);