michael@0: import WebIDL michael@0: michael@0: def WebIDLTest(parser, harness): michael@0: parser.parse(""" michael@0: interface TestArrayBuffer { michael@0: attribute ArrayBuffer bufferAttr; michael@0: void bufferMethod(ArrayBuffer arg1, ArrayBuffer? arg2, ArrayBuffer[] arg3, sequence arg4); michael@0: michael@0: attribute ArrayBufferView viewAttr; michael@0: void viewMethod(ArrayBufferView arg1, ArrayBufferView? arg2, ArrayBufferView[] arg3, sequence arg4); michael@0: michael@0: attribute Int8Array int8ArrayAttr; michael@0: void int8ArrayMethod(Int8Array arg1, Int8Array? arg2, Int8Array[] arg3, sequence arg4); michael@0: michael@0: attribute Uint8Array uint8ArrayAttr; michael@0: void uint8ArrayMethod(Uint8Array arg1, Uint8Array? arg2, Uint8Array[] arg3, sequence arg4); michael@0: michael@0: attribute Uint8ClampedArray uint8ClampedArrayAttr; michael@0: void uint8ClampedArrayMethod(Uint8ClampedArray arg1, Uint8ClampedArray? arg2, Uint8ClampedArray[] arg3, sequence arg4); michael@0: michael@0: attribute Int16Array int16ArrayAttr; michael@0: void int16ArrayMethod(Int16Array arg1, Int16Array? arg2, Int16Array[] arg3, sequence arg4); michael@0: michael@0: attribute Uint16Array uint16ArrayAttr; michael@0: void uint16ArrayMethod(Uint16Array arg1, Uint16Array? arg2, Uint16Array[] arg3, sequence arg4); michael@0: michael@0: attribute Int32Array int32ArrayAttr; michael@0: void int32ArrayMethod(Int32Array arg1, Int32Array? arg2, Int32Array[] arg3, sequence arg4); michael@0: michael@0: attribute Uint32Array uint32ArrayAttr; michael@0: void uint32ArrayMethod(Uint32Array arg1, Uint32Array? arg2, Uint32Array[] arg3, sequence arg4); michael@0: michael@0: attribute Float32Array float32ArrayAttr; michael@0: void float32ArrayMethod(Float32Array arg1, Float32Array? arg2, Float32Array[] arg3, sequence arg4); michael@0: michael@0: attribute Float64Array float64ArrayAttr; michael@0: void float64ArrayMethod(Float64Array arg1, Float64Array? arg2, Float64Array[] arg3, sequence arg4); michael@0: }; michael@0: """) michael@0: michael@0: results = parser.finish() michael@0: michael@0: iface = results[0] michael@0: michael@0: harness.ok(True, "TestArrayBuffer interface parsed without error") michael@0: harness.check(len(iface.members), 22, "Interface should have twenty two members") michael@0: michael@0: members = iface.members michael@0: michael@0: def checkStuff(attr, method, t): michael@0: harness.ok(isinstance(attr, WebIDL.IDLAttribute), "Expect an IDLAttribute") michael@0: harness.ok(isinstance(method, WebIDL.IDLMethod), "Expect an IDLMethod") michael@0: michael@0: harness.check(str(attr.type), t, "Expect an ArrayBuffer type") michael@0: harness.ok(attr.type.isSpiderMonkeyInterface(), "Should test as a js interface") michael@0: michael@0: (retType, arguments) = method.signatures()[0] michael@0: harness.ok(retType.isVoid(), "Should have a void return type") michael@0: harness.check(len(arguments), 4, "Expect 4 arguments") michael@0: michael@0: harness.check(str(arguments[0].type), t, "Expect an ArrayBuffer type") michael@0: harness.ok(arguments[0].type.isSpiderMonkeyInterface(), "Should test as a js interface") michael@0: michael@0: harness.check(str(arguments[1].type), t + "OrNull", "Expect an ArrayBuffer type") michael@0: harness.ok(arguments[1].type.inner.isSpiderMonkeyInterface(), "Should test as a js interface") michael@0: michael@0: harness.check(str(arguments[2].type), t + "Array", "Expect an ArrayBuffer type") michael@0: harness.ok(arguments[2].type.inner.isSpiderMonkeyInterface(), "Should test as a js interface") michael@0: michael@0: harness.check(str(arguments[3].type), t + "Sequence", "Expect an ArrayBuffer type") michael@0: harness.ok(arguments[3].type.inner.isSpiderMonkeyInterface(), "Should test as a js interface") michael@0: michael@0: michael@0: checkStuff(members[0], members[1], "ArrayBuffer") michael@0: checkStuff(members[2], members[3], "ArrayBufferView") michael@0: checkStuff(members[4], members[5], "Int8Array") michael@0: checkStuff(members[6], members[7], "Uint8Array") michael@0: checkStuff(members[8], members[9], "Uint8ClampedArray") michael@0: checkStuff(members[10], members[11], "Int16Array") michael@0: checkStuff(members[12], members[13], "Uint16Array") michael@0: checkStuff(members[14], members[15], "Int32Array") michael@0: checkStuff(members[16], members[17], "Uint32Array") michael@0: checkStuff(members[18], members[19], "Float32Array") michael@0: checkStuff(members[20], members[21], "Float64Array")