dom/bindings/parser/tests/test_arraybuffer.py

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/dom/bindings/parser/tests/test_arraybuffer.py	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,84 @@
     1.4 +import WebIDL
     1.5 +
     1.6 +def WebIDLTest(parser, harness):
     1.7 +    parser.parse("""
     1.8 +        interface TestArrayBuffer {
     1.9 +          attribute ArrayBuffer bufferAttr;
    1.10 +          void bufferMethod(ArrayBuffer arg1, ArrayBuffer? arg2, ArrayBuffer[] arg3, sequence<ArrayBuffer> arg4);
    1.11 +
    1.12 +          attribute ArrayBufferView viewAttr;
    1.13 +          void viewMethod(ArrayBufferView arg1, ArrayBufferView? arg2, ArrayBufferView[] arg3, sequence<ArrayBufferView> arg4);
    1.14 +
    1.15 +          attribute Int8Array int8ArrayAttr;
    1.16 +          void int8ArrayMethod(Int8Array arg1, Int8Array? arg2, Int8Array[] arg3, sequence<Int8Array> arg4);
    1.17 +
    1.18 +          attribute Uint8Array uint8ArrayAttr;
    1.19 +          void uint8ArrayMethod(Uint8Array arg1, Uint8Array? arg2, Uint8Array[] arg3, sequence<Uint8Array> arg4);
    1.20 +
    1.21 +          attribute Uint8ClampedArray uint8ClampedArrayAttr;
    1.22 +          void uint8ClampedArrayMethod(Uint8ClampedArray arg1, Uint8ClampedArray? arg2, Uint8ClampedArray[] arg3, sequence<Uint8ClampedArray> arg4);
    1.23 +
    1.24 +          attribute Int16Array int16ArrayAttr;
    1.25 +          void int16ArrayMethod(Int16Array arg1, Int16Array? arg2, Int16Array[] arg3, sequence<Int16Array> arg4);
    1.26 +
    1.27 +          attribute Uint16Array uint16ArrayAttr;
    1.28 +          void uint16ArrayMethod(Uint16Array arg1, Uint16Array? arg2, Uint16Array[] arg3, sequence<Uint16Array> arg4);
    1.29 +
    1.30 +          attribute Int32Array int32ArrayAttr;
    1.31 +          void int32ArrayMethod(Int32Array arg1, Int32Array? arg2, Int32Array[] arg3, sequence<Int32Array> arg4);
    1.32 +
    1.33 +          attribute Uint32Array uint32ArrayAttr;
    1.34 +          void uint32ArrayMethod(Uint32Array arg1, Uint32Array? arg2, Uint32Array[] arg3, sequence<Uint32Array> arg4);
    1.35 +
    1.36 +          attribute Float32Array float32ArrayAttr;
    1.37 +          void float32ArrayMethod(Float32Array arg1, Float32Array? arg2, Float32Array[] arg3, sequence<Float32Array> arg4);
    1.38 +
    1.39 +          attribute Float64Array float64ArrayAttr;
    1.40 +          void float64ArrayMethod(Float64Array arg1, Float64Array? arg2, Float64Array[] arg3, sequence<Float64Array> arg4);
    1.41 +        };
    1.42 +    """)
    1.43 +
    1.44 +    results = parser.finish()
    1.45 +
    1.46 +    iface = results[0]
    1.47 +
    1.48 +    harness.ok(True, "TestArrayBuffer interface parsed without error")
    1.49 +    harness.check(len(iface.members), 22, "Interface should have twenty two members")
    1.50 +
    1.51 +    members = iface.members
    1.52 +
    1.53 +    def checkStuff(attr, method, t):
    1.54 +        harness.ok(isinstance(attr, WebIDL.IDLAttribute), "Expect an IDLAttribute")
    1.55 +        harness.ok(isinstance(method, WebIDL.IDLMethod), "Expect an IDLMethod")
    1.56 +
    1.57 +        harness.check(str(attr.type), t, "Expect an ArrayBuffer type")
    1.58 +        harness.ok(attr.type.isSpiderMonkeyInterface(), "Should test as a js interface")
    1.59 +
    1.60 +        (retType, arguments) = method.signatures()[0]
    1.61 +        harness.ok(retType.isVoid(), "Should have a void return type")
    1.62 +        harness.check(len(arguments), 4, "Expect 4 arguments")
    1.63 +
    1.64 +        harness.check(str(arguments[0].type), t,  "Expect an ArrayBuffer type")
    1.65 +        harness.ok(arguments[0].type.isSpiderMonkeyInterface(), "Should test as a js interface")
    1.66 +
    1.67 +        harness.check(str(arguments[1].type), t + "OrNull",  "Expect an ArrayBuffer type")
    1.68 +        harness.ok(arguments[1].type.inner.isSpiderMonkeyInterface(), "Should test as a js interface")
    1.69 +
    1.70 +        harness.check(str(arguments[2].type), t + "Array",  "Expect an ArrayBuffer type")
    1.71 +        harness.ok(arguments[2].type.inner.isSpiderMonkeyInterface(), "Should test as a js interface")
    1.72 +
    1.73 +        harness.check(str(arguments[3].type), t + "Sequence",  "Expect an ArrayBuffer type")
    1.74 +        harness.ok(arguments[3].type.inner.isSpiderMonkeyInterface(), "Should test as a js interface")
    1.75 +
    1.76 +
    1.77 +    checkStuff(members[0],  members[1],  "ArrayBuffer")
    1.78 +    checkStuff(members[2],  members[3],  "ArrayBufferView")
    1.79 +    checkStuff(members[4],  members[5],  "Int8Array")
    1.80 +    checkStuff(members[6],  members[7],  "Uint8Array")
    1.81 +    checkStuff(members[8],  members[9],  "Uint8ClampedArray")
    1.82 +    checkStuff(members[10], members[11], "Int16Array")
    1.83 +    checkStuff(members[12], members[13], "Uint16Array")
    1.84 +    checkStuff(members[14], members[15], "Int32Array")
    1.85 +    checkStuff(members[16], members[17], "Uint32Array")
    1.86 +    checkStuff(members[18], members[19], "Float32Array")
    1.87 +    checkStuff(members[20], members[21], "Float64Array")

mercurial