mirror of https://github.com/tc39/test262.git
59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
// Copyright (C) 2016 ecmascript_simd authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: pending
|
|
description: Test SIMD operators.
|
|
includes: [simdUtilities.js]
|
|
---*/
|
|
|
|
function testOperators(type) {
|
|
var inst = createTestValue(type);
|
|
assert.throws(TypeError, function() { Number(inst) });
|
|
assert.throws(TypeError, function() { +inst });
|
|
assert.throws(TypeError, function() { -inst });
|
|
assert.throws(TypeError, function() { ~inst });
|
|
assert.throws(TypeError, function() { Math.fround(inst) });
|
|
assert.throws(TypeError, function() { inst|0} );
|
|
assert.throws(TypeError, function() { inst&0 });
|
|
assert.throws(TypeError, function() { inst^0 });
|
|
assert.throws(TypeError, function() { inst>>>0 });
|
|
assert.throws(TypeError, function() { inst>>0 });
|
|
assert.throws(TypeError, function() { inst<<0 });
|
|
assert.throws(TypeError, function() { (inst + inst) });
|
|
assert.throws(TypeError, function() { inst - inst });
|
|
assert.throws(TypeError, function() { inst * inst });
|
|
assert.throws(TypeError, function() { inst / inst });
|
|
assert.throws(TypeError, function() { inst % inst });
|
|
assert.throws(TypeError, function() { inst < inst });
|
|
assert.throws(TypeError, function() { inst > inst });
|
|
assert.throws(TypeError, function() { inst <= inst });
|
|
assert.throws(TypeError, function() { inst >= inst });
|
|
assert.throws(TypeError, function() { inst(); });
|
|
|
|
assert.sameValue(inst[0], undefined);
|
|
assert.sameValue(inst.a, undefined);
|
|
assert.sameValue(!inst, false);
|
|
assert.sameValue(!inst, false);
|
|
assert.sameValue(inst ? 1 : 2, 1);
|
|
assert.sameValue(inst ? 1 : 2, 1);
|
|
|
|
assert.sameValue('function', typeof inst.toString);
|
|
assert.sameValue('function', typeof inst.toLocaleString);
|
|
assert.sameValue(inst.toLocaleString(), simdToLocaleString(type, inst));
|
|
|
|
var eval_value = eval(inst.toString());
|
|
var value = type.fn.check(inst);
|
|
for(var i = 0; i < type.lanes; i++) {
|
|
assert.sameValue(type.fn.extractLane(eval_value, i),
|
|
type.fn.extractLane(value, i));
|
|
}
|
|
// TODO: test valueOf?
|
|
}
|
|
|
|
simdTypes.forEach(function(type) {
|
|
testSimdFunction(type.name + ' operators', function() {
|
|
testOperators(type);
|
|
});
|
|
});
|