diff options
-rw-r--r-- | src/qml/jsruntime/qv4dataview.cpp | 20 | ||||
-rw-r--r-- | tests/manual/v4/typedarrays.js | 35 |
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]] |