aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsruntime/qv4dataview.cpp20
-rw-r--r--tests/manual/v4/typedarrays.js35
2 files changed, 46 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4dataview.cpp b/src/qml/jsruntime/qv4dataview.cpp
index a741d61d10..e5ac32283e 100644
--- a/src/qml/jsruntime/qv4dataview.cpp
+++ b/src/qml/jsruntime/qv4dataview.cpp
@@ -103,22 +103,30 @@ void DataViewPrototype::init(ExecutionEngine *engine, Object *ctor)
defineAccessorProperty(QStringLiteral("byteOffset"), method_get_byteOffset, 0);
defineDefaultProperty(QStringLiteral("getInt8"), method_getChar<signed char>, 0);
- defineDefaultProperty(QStringLiteral("getUInt8"), method_getChar<unsigned char>, 0);
+ defineDefaultProperty(QStringLiteral("getUint8"), method_getChar<unsigned char>, 0);
defineDefaultProperty(QStringLiteral("getInt16"), method_get<short>, 0);
- defineDefaultProperty(QStringLiteral("getUInt16"), method_get<unsigned short>, 0);
+ defineDefaultProperty(QStringLiteral("getUint16"), method_get<unsigned short>, 0);
defineDefaultProperty(QStringLiteral("getInt32"), method_get<int>, 0);
- defineDefaultProperty(QStringLiteral("getUInt32"), method_get<unsigned int>, 0);
+ defineDefaultProperty(QStringLiteral("getUint32"), method_get<unsigned int>, 0);
defineDefaultProperty(QStringLiteral("getFloat32"), method_getFloat<float>, 0);
defineDefaultProperty(QStringLiteral("getFloat64"), method_getFloat<double>, 0);
defineDefaultProperty(QStringLiteral("setInt8"), method_setChar<signed char>, 0);
- defineDefaultProperty(QStringLiteral("setUInt8"), method_setChar<unsigned char>, 0);
+ defineDefaultProperty(QStringLiteral("setUint8"), method_setChar<unsigned char>, 0);
defineDefaultProperty(QStringLiteral("setInt16"), method_set<short>, 0);
- defineDefaultProperty(QStringLiteral("setUInt16"), method_set<unsigned short>, 0);
+ defineDefaultProperty(QStringLiteral("setUint16"), method_set<unsigned short>, 0);
defineDefaultProperty(QStringLiteral("setInt32"), method_set<int>, 0);
- defineDefaultProperty(QStringLiteral("setUInt32"), method_set<unsigned int>, 0);
+ defineDefaultProperty(QStringLiteral("setUint32"), method_set<unsigned int>, 0);
defineDefaultProperty(QStringLiteral("setFloat32"), method_setFloat<float>, 0);
defineDefaultProperty(QStringLiteral("setFloat64"), method_setFloat<double>, 0);
+
+ // For backword compatibility
+ defineDefaultProperty(QStringLiteral("getUInt8"), method_getChar<unsigned char>, 0);
+ defineDefaultProperty(QStringLiteral("getUInt16"), method_get<unsigned short>, 0);
+ defineDefaultProperty(QStringLiteral("getUInt32"), method_get<unsigned int>, 0);
+ defineDefaultProperty(QStringLiteral("setUInt8"), method_setChar<unsigned char>, 0);
+ defineDefaultProperty(QStringLiteral("setUInt16"), method_set<unsigned short>, 0);
+ defineDefaultProperty(QStringLiteral("setUInt32"), method_set<unsigned int>, 0);
}
ReturnedValue DataViewPrototype::method_get_buffer(CallContext *ctx)
diff --git a/tests/manual/v4/typedarrays.js b/tests/manual/v4/typedarrays.js
index d52fd6bab0..8cf2b8c75a 100644
--- a/tests/manual/v4/typedarrays.js
+++ b/tests/manual/v4/typedarrays.js
@@ -51,11 +51,13 @@ function assertTrue(b) {
throw "assertTrue failed:" + b
}
-function assertEquals(a, b) {
+function assertEquals(a, b, delta) {
if (isNaN(a) && isNaN(b))
return
- if (a !== b)
+ if (!delta && a !== b)
throw "assertEquals failed:" + a + "!==" + b
+ else if (Math.abs(a - b) > delta)
+ throw "assertEquals failed: Math.abs(" + a + " - " + b + ") > " + delta
}
function assertArrayEquals(a, b)
@@ -700,9 +702,36 @@ function TestDataViewPropertyTypeChecks() {
CheckProperty("byteLength");
}
-
TestDataViewPropertyTypeChecks();
+function TestDataGetterSetters() {
+ var a = new DataView(new ArrayBuffer(16));
+ function TestGetterSetter(size, name, value0, value1, delta1, delta2) {
+ var getter = 'get' + name;
+ var setter = 'set' + name;
+ a[setter](0, value0);
+ a[setter](size, value1);
+ assertEquals(value0, a[getter](0), delta1);
+ assertEquals(value1, a[getter](size), delta2);
+ }
+
+ TestGetterSetter(1, 'Int8', 111, -100);
+ TestGetterSetter(2, 'Int16', 31111, -30000);
+ TestGetterSetter(4, 'Int32', 2111111111, -2000000000);
+ TestGetterSetter(1, 'Uint8', 111, 200);
+ TestGetterSetter(2, 'Uint16', 31111, 60000);
+ TestGetterSetter(4, 'Uint32', 2111111111, 4000000000);
+ TestGetterSetter(4, 'Float32', Math.pow(10, 38), Math.pow(10, -38), Math.pow(10, 31), Math.pow(10, -45));
+ TestGetterSetter(8, 'Float64', Math.pow(10, 308), Math.pow(10, -293), Math.pow(10, 293), Math.pow(10, -308));
+
+ // Backword compatibility
+ TestGetterSetter(1, 'UInt8', 111, 200);
+ TestGetterSetter(2, 'UInt16', 31111, 60000);
+ TestGetterSetter(4, 'UInt32', 2111111111, 4000000000);
+}
+
+TestDataGetterSetters();
+
// General tests for properties
// Test property attribute [[Enumerable]]