|
1 import WebIDL |
|
2 |
|
3 def WebIDLTest(parser, harness): |
|
4 parser.parse(""" |
|
5 callback interface TestCallbackInterface { |
|
6 attribute boolean bool; |
|
7 }; |
|
8 """) |
|
9 |
|
10 results = parser.finish() |
|
11 |
|
12 iface = results[0] |
|
13 |
|
14 harness.ok(iface.isCallback(), "Interface should be a callback") |
|
15 |
|
16 parser = parser.reset() |
|
17 threw = False |
|
18 try: |
|
19 parser.parse(""" |
|
20 interface TestInterface { |
|
21 }; |
|
22 callback interface TestCallbackInterface : TestInterface { |
|
23 attribute boolean bool; |
|
24 }; |
|
25 """) |
|
26 results = parser.finish() |
|
27 except: |
|
28 threw = True |
|
29 |
|
30 harness.ok(threw, "Should not allow non-callback parent of callback interface") |
|
31 |
|
32 parser = parser.reset() |
|
33 threw = False |
|
34 try: |
|
35 parser.parse(""" |
|
36 interface TestInterface : TestCallbackInterface { |
|
37 }; |
|
38 callback interface TestCallbackInterface { |
|
39 attribute boolean bool; |
|
40 }; |
|
41 """) |
|
42 results = parser.finish() |
|
43 except: |
|
44 threw = True |
|
45 |
|
46 harness.ok(threw, "Should not allow callback parent of non-callback interface") |
|
47 |
|
48 parser = parser.reset() |
|
49 parser.parse(""" |
|
50 callback interface TestCallbackInterface1 { |
|
51 void foo(); |
|
52 }; |
|
53 callback interface TestCallbackInterface2 { |
|
54 void foo(DOMString arg); |
|
55 void foo(TestCallbackInterface1 arg); |
|
56 }; |
|
57 callback interface TestCallbackInterface3 { |
|
58 void foo(DOMString arg); |
|
59 void foo(TestCallbackInterface1 arg); |
|
60 static void bar(); |
|
61 }; |
|
62 callback interface TestCallbackInterface4 { |
|
63 void foo(DOMString arg); |
|
64 void foo(TestCallbackInterface1 arg); |
|
65 static void bar(); |
|
66 const long baz = 5; |
|
67 }; |
|
68 callback interface TestCallbackInterface5 { |
|
69 static attribute boolean bool; |
|
70 void foo(); |
|
71 }; |
|
72 callback interface TestCallbackInterface6 { |
|
73 void foo(DOMString arg); |
|
74 void foo(TestCallbackInterface1 arg); |
|
75 void bar(); |
|
76 }; |
|
77 callback interface TestCallbackInterface7 { |
|
78 static attribute boolean bool; |
|
79 }; |
|
80 callback interface TestCallbackInterface8 { |
|
81 attribute boolean bool; |
|
82 }; |
|
83 callback interface TestCallbackInterface9 : TestCallbackInterface1 { |
|
84 void foo(); |
|
85 }; |
|
86 callback interface TestCallbackInterface10 : TestCallbackInterface1 { |
|
87 void bar(); |
|
88 }; |
|
89 """) |
|
90 results = parser.finish() |
|
91 for (i, iface) in enumerate(results): |
|
92 harness.check(iface.isSingleOperationInterface(), i < 4, |
|
93 "Interface %s should be a single operation interface" % |
|
94 iface.identifier.name) |