| // |reftest| skip-if(!this.hasOwnProperty("TypedObject")) |
| var BUGNUMBER = 922216; |
| var summary = 'TypedObjects Equivalent StructTypes'; |
| |
| 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 assertEquivalent(t1, t2) { |
| assertEq(true, t1.equivalent(t2)); |
| assertEq(true, t2.equivalent(t1)); |
| } |
| |
| function assertNotEquivalent(t1, t2) { |
| assertEq(false, t1.equivalent(t2)); |
| assertEq(false, t2.equivalent(t1)); |
| } |
| |
| function runTests() { |
| print(BUGNUMBER + ": " + summary); |
| |
| // Create a line: |
| var PixelType1 = new StructType({x: uint8, y: uint8}); |
| var LineType1 = new StructType({from: PixelType1, to: PixelType1}); |
| |
| // Sanity checks about type equivalence: |
| assertEquivalent(PixelType1, PixelType1); |
| assertEquivalent(LineType1, LineType1); |
| assertNotEquivalent(PixelType1, LineType1); |
| |
| // Define the same two types again. Equivalent. |
| var PixelType2 = new StructType({x: uint8, y: uint8}); |
| var LineType2 = new StructType({from: PixelType2, to: PixelType2}); |
| assertEquivalent(PixelType1, PixelType2); |
| assertEquivalent(LineType1, LineType2); |
| |
| // Define the pixel type with field order reversed. Not equivalent. |
| var PixelType3 = new StructType({y: uint8, x: uint8}); |
| var LineType3 = new StructType({from: PixelType3, to: PixelType3}); |
| assertNotEquivalent(PixelType1, PixelType3); |
| assertNotEquivalent(LineType1, LineType3); |
| |
| // Define the line type with field order reversed. Not equivalent. |
| var PixelType4 = new StructType({x: uint8, y: uint8}); |
| var LineType4 = new StructType({to: PixelType4, from: PixelType4}); |
| assertEquivalent(PixelType1, PixelType4); |
| assertNotEquivalent(LineType1, LineType4); |
| |
| reportCompare(true, true); |
| print("Tests complete"); |
| } |
| |
| runTests(); |