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