diff options
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/TypedArray.cpp | 2 | ||||
-rw-r--r-- | Userland/Libraries/LibJS/Tests/builtins/TypedArray/TypedArray.prototype.BYTES_PER_ELEMENT.js | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/TypedArray.cpp b/Userland/Libraries/LibJS/Runtime/TypedArray.cpp index eaf542a9f6..a9bfef012d 100644 --- a/Userland/Libraries/LibJS/Runtime/TypedArray.cpp +++ b/Userland/Libraries/LibJS/Runtime/TypedArray.cpp @@ -194,6 +194,8 @@ void TypedArrayBase::visit_edges(Visitor& visitor) PrototypeName::PrototypeName(GlobalObject& global_object) \ : Object(*global_object.typed_array_prototype()) \ { \ + auto& vm = this->vm(); \ + define_property(vm.names.BYTES_PER_ELEMENT, Value((i32)sizeof(Type)), 0); \ } \ PrototypeName::~PrototypeName() { } \ \ diff --git a/Userland/Libraries/LibJS/Tests/builtins/TypedArray/TypedArray.prototype.BYTES_PER_ELEMENT.js b/Userland/Libraries/LibJS/Tests/builtins/TypedArray/TypedArray.prototype.BYTES_PER_ELEMENT.js new file mode 100644 index 0000000000..3d221eebd9 --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/TypedArray/TypedArray.prototype.BYTES_PER_ELEMENT.js @@ -0,0 +1,18 @@ +// Update when more typed arrays get added +const TYPED_ARRAYS = [ + { array: Uint8Array, expected: 1 }, + { array: Uint16Array, expected: 2 }, + { array: Uint32Array, expected: 4 }, + { array: Int8Array, expected: 1 }, + { array: Int16Array, expected: 2 }, + { array: Int32Array, expected: 4 }, + { array: Float32Array, expected: 4 }, + { array: Float64Array, expected: 8 }, +]; + +test("basic functionality", () => { + TYPED_ARRAYS.forEach(T => { + const typedArray = new T.array(); + expect(typedArray.BYTES_PER_ELEMENT).toBe(T.expected); + }); +}); |