blob: 6881e3ba37a6b5ab86fcda9060b08df45908c2d7 [file] [log] [blame]
// |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();