summaryrefslogtreecommitdiffstats
path: root/dom/bindings/parser/tests/test_global_extended_attr.py
blob: c752cecd298bbb87df8eb69bf80242217da13a5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
def WebIDLTest(parser, harness):
    parser.parse("""
      [Global]
      interface Foo : Bar {
        getter any(DOMString name);
      };
      interface Bar {};
    """)

    results = parser.finish()

    harness.ok(results[0].isOnGlobalProtoChain(),
               "[Global] interface should be on global's proto chain")
    harness.ok(results[1].isOnGlobalProtoChain(),
               "[Global] interface should be on global's proto chain")

    parser = parser.reset()
    threw = False
    try:
        parser.parse("""
          [Global]
          interface Foo {
            getter any(DOMString name);
            setter void(DOMString name, any arg);
          };
        """)
        results = parser.finish()
    except:
        threw = True

    harness.ok(threw,
               "Should have thrown for [Global] used on an interface with a "
               "named setter")

    parser = parser.reset()
    threw = False
    try:
        parser.parse("""
          [Global]
          interface Foo {
            getter any(DOMString name);
            creator void(DOMString name, any arg);
          };
        """)
        results = parser.finish()
    except:
        threw = True

    harness.ok(threw,
               "Should have thrown for [Global] used on an interface with a "
               "named creator")

    parser = parser.reset()
    threw = False
    try:
        parser.parse("""
          [Global]
          interface Foo {
            getter any(DOMString name);
            deleter void(DOMString name);
          };
        """)
        results = parser.finish()
    except:
        threw = True

    harness.ok(threw,
               "Should have thrown for [Global] used on an interface with a "
               "named deleter")

    parser = parser.reset()
    threw = False
    try:
        parser.parse("""
          [Global, OverrideBuiltins]
          interface Foo {
          };
        """)
        results = parser.finish()
    except:
        threw = True

    harness.ok(threw,
               "Should have thrown for [Global] used on an interface with a "
               "[OverrideBuiltins]")

    parser = parser.reset()
    threw = False
    try:
        parser.parse("""
          [Global]
          interface Foo : Bar {
          };
          [OverrideBuiltins]
          interface Bar {
          };
        """)
        results = parser.finish()
    except:
        threw = True

    harness.ok(threw,
               "Should have thrown for [Global] used on an interface with an "
               "[OverrideBuiltins] ancestor")

    parser = parser.reset()
    threw = False
    try:
        parser.parse("""
          [Global]
          interface Foo {
          };
          interface Bar : Foo {
          };
        """)
        results = parser.finish()
    except:
        threw = True

    harness.ok(threw,
               "Should have thrown for [Global] used on an interface with a "
               "descendant")