mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 12:05:15 +00:00
LibJS: Add Array.prototype.unshift()
This commit is contained in:
parent
5da1a40ccf
commit
29253bf932
Notes:
sideshowbarker
2024-07-19 07:36:28 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/29253bf9325 Pull-request: https://github.com/SerenityOS/serenity/pull/1793
3 changed files with 42 additions and 0 deletions
|
@ -41,6 +41,7 @@ ArrayPrototype::ArrayPrototype()
|
|||
put_native_function("push", push, 1);
|
||||
put_native_function("shift", shift, 0);
|
||||
put_native_function("toString", to_string, 0);
|
||||
put_native_function("unshift", unshift, 1);
|
||||
put("length", Value(0));
|
||||
}
|
||||
|
||||
|
@ -70,6 +71,16 @@ Value ArrayPrototype::push(Interpreter& interpreter)
|
|||
return Value(array->length());
|
||||
}
|
||||
|
||||
Value ArrayPrototype::unshift(Interpreter& interpreter)
|
||||
{
|
||||
auto* array = array_from(interpreter);
|
||||
if (!array)
|
||||
return {};
|
||||
for (size_t i = 0; i < interpreter.argument_count(); ++i)
|
||||
array->elements().insert(i, interpreter.argument(i));
|
||||
return Value(array->length());
|
||||
}
|
||||
|
||||
Value ArrayPrototype::pop(Interpreter& interpreter)
|
||||
{
|
||||
auto* array = array_from(interpreter);
|
||||
|
|
|
@ -42,6 +42,7 @@ private:
|
|||
static Value push(Interpreter&);
|
||||
static Value shift(Interpreter&);
|
||||
static Value to_string(Interpreter&);
|
||||
static Value unshift(Interpreter&);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
30
Libraries/LibJS/Tests/Array.prototype.unshift.js
Normal file
30
Libraries/LibJS/Tests/Array.prototype.unshift.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
load("test-common.js");
|
||||
|
||||
try {
|
||||
assert(Array.prototype.unshift.length === 1);
|
||||
|
||||
var a = ["hello"];
|
||||
var length = a.unshift();
|
||||
assert(length === 1);
|
||||
assert(a.length === 1);
|
||||
assert(a[0] === "hello");
|
||||
|
||||
length = a.unshift("friends");
|
||||
assert(length === 2);
|
||||
assert(a.length === 2);
|
||||
assert(a[0] === "friends");
|
||||
assert(a[1] === "hello");
|
||||
|
||||
length = a.unshift(1, 2, 3);
|
||||
assert(length === 5);
|
||||
assert(a.length === 5);
|
||||
assert(a[0] === 1);
|
||||
assert(a[1] === 2);
|
||||
assert(a[2] === 3);
|
||||
assert(a[3] === "friends");
|
||||
assert(a[4] === "hello");
|
||||
|
||||
console.log("PASS");
|
||||
} catch (e) {
|
||||
console.log("FAIL: " + e);
|
||||
}
|
Loading…
Add table
Reference in a new issue