| // Testing GETELEM and SETELEM on a typed array where the |
| // type set of the object may include undefined or other |
| // primitive types. |
| |
| // Argument x has type {void, double, Uint16Array}. |
| function testSet(x) { |
| var y = 0; |
| for (var i=0; i<40; i++) { |
| x[i] = 3; |
| } |
| return x[10]; |
| } |
| |
| // Argument x has type {void, int32, Uint16Array}. |
| function testGet(x) { |
| var y = 0; |
| for (var i=0; i<40; i++) { |
| y += x[i]; |
| } |
| return y; |
| } |
| |
| var arr = new Uint16Array(40); |
| assertEq(testSet(arr), 3); |
| try { |
| testSet(undefined); |
| } catch(e) { |
| assertEq(e instanceof TypeError, true); |
| } |
| try { |
| testSet(4.5); |
| } catch(e) { |
| assertEq(e instanceof TypeError, true); |
| } |
| |
| assertEq(testGet(arr), 120); |
| try { |
| testGet(undefined); |
| } catch(e) { |
| assertEq(e instanceof TypeError, true); |
| } |
| try { |
| testGet(12345); |
| } catch(e) { |
| assertEq(e instanceof TypeError, true); |
| } |