chromium/third_party/blink/web_tests/fast/js/script-tests/unshift-multi.js

description(
'Test for regression against <a href="https://bugs.webkit.org/show_bug.cgi?id=43401">Calling unshift passing more than 1 argument causes array corruption.  It also tests some other unshift combinations.'
);


function unshift1(n) {
    var anArray = [];
    for (var i = 0; i < n; i++) {
        anArray.unshift('a');
    }
    
    return anArray;
}

function unshift2(n) {
    var anArray = [];
    for (var i = 0; i < n; i++) {
        anArray.unshift('a', 'b');
    }

    return anArray;
}

function unshift5(n) {
    var anArray = [];
    for (var i = 0; i < n; i++) {
        anArray.unshift('a', 'b', 'c', 'd', 'e');
    }

    return anArray;
}


shouldBe('unshift1(1)', '["a"]');
shouldBe('unshift1(2)', '["a", "a"]');
shouldBe('unshift1(4)', '["a", "a", "a", "a"]');
shouldBe('unshift2(1)', '["a", "b"]');
shouldBe('unshift2(2)', '["a", "b", "a", "b"]');
shouldBe('unshift2(4)', '["a", "b", "a", "b", "a", "b", "a", "b"]');
shouldBe('unshift2(10)', '["a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b", "a", "b"]');
shouldBe('unshift5(1)', '["a", "b", "c", "d", "e"]');
shouldBe('unshift5(2)', '["a", "b", "c", "d", "e", "a", "b", "c", "d", "e"]');
shouldBe('unshift5(6)', '["a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e", "a", "b", "c", "d", "e"]');