| // |reftest| skip-if(!this.hasOwnProperty("TypedObject")) |
| var BUGNUMBER = 578700; |
| var summary = 'Size and Alignment of TypedObjects types'; |
| var actual = ''; |
| var expect = ''; |
| |
| |
| 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() { |
| printBugNumber(BUGNUMBER); |
| printStatus(summary); |
| |
| var typesAndAlignments = [ |
| {type: uint8, size: 1, alignment: 1}, |
| {type: uint8Clamped, size: 1, alignment: 1}, |
| {type: uint16, size: 2, alignment: 2}, |
| {type: uint32, size: 4, alignment: 4}, |
| |
| {type: int8, size: 1, alignment: 1}, |
| {type: int16, size: 2, alignment: 2}, |
| {type: int32, size: 4, alignment: 4}, |
| |
| {type: float32, size: 4, alignment: 4}, |
| {type: float64, size: 8, alignment: 8}, |
| |
| {type: new StructType({a: uint8, b: uint16, c: uint8}), size: 6, alignment: 2}, |
| |
| {type: new StructType({a: uint8, b: uint8, c: uint16}), size: 4, alignment: 2}, |
| |
| {type: new ArrayType(uint8, 32), size: 32, alignment: 1}, |
| {type: new ArrayType(uint16, 16), size: 32, alignment: 2}, |
| {type: new ArrayType(uint32, 8), size: 32, alignment: 4}, |
| ]; |
| |
| for (var i = 0; i < typesAndAlignments.length; i++) { |
| var test = typesAndAlignments[i]; |
| print("Type:", test.type.toSource(), |
| "Size:", test.type.byteLength, |
| "Alignment:", test.type.byteAlignment); |
| assertEq(test.type.byteLength, test.size); |
| assertEq(test.type.byteAlignment, test.alignment); |
| } |
| |
| if (typeof reportCompare === "function") |
| reportCompare(true, true); |
| print("Tests complete"); |
| } |
| |
| runTests(); |