blob: 0904401ed0c932c4747249f8ae4ee8b49cb977a8 [file] [log] [blame]
// |reftest| skip-if(!this.hasOwnProperty("TypedObject"))
var BUGNUMBER = 578700;
var summary = 'TypedObjects: check reflection on StructType objects';
var ArrayType = TypedObject.ArrayType;
var StructType = TypedObject.StructType;
var uint8 = TypedObject.uint8;
var uint16 = TypedObject.uint16;
var uint32 = TypedObject.uint32;
var uint8Clamped = TypedObject.uint8Clamped;
var int8 = TypedObject.int8;
var int16 = TypedObject.int16;
var int32 = TypedObject.int32;
var float32 = TypedObject.float32;
var float64 = TypedObject.float64;
function runTests() {
print(BUGNUMBER + ": " + summary);
var S = new StructType({x: int32, y: uint8, z: float64});
assertEq(S.__proto__, StructType.prototype);
assertEq(S.prototype.__proto__, StructType.prototype.prototype);
assertEq(S.toSource(), "new StructType({x: int32, y: uint8, z: float64})");
assertEq(S.byteLength, 16);
assertEq(S.byteAlignment, 8);
var fieldNames = Object.getOwnPropertyNames(S.fieldTypes);
assertEq(fieldNames[0], "x");
assertEq(fieldNames[1], "y");
assertEq(fieldNames[2], "z");
assertEq(fieldNames.length, 3);
assertEq(S.fieldTypes.x, int32);
assertEq(S.fieldTypes.y, uint8);
assertEq(S.fieldTypes.z, float64);
assertEq(S.fieldOffsets.x, 0);
assertEq(S.fieldOffsets.y, 4);
assertEq(S.fieldOffsets.z, 8);
// fieldTypes and fieldOffsets should be frozen
assertEq(Object.isFrozen(S.fieldTypes), true);
assertEq(Object.isFrozen(S.fieldOffsets), true);
if (typeof reportCompare === "function")
reportCompare(true, true);
print("Tests complete");
}
runTests();