151 lines
3.2 KiB
Python
151 lines
3.2 KiB
Python
import WebIDL
|
|
|
|
|
|
def WebIDLTest(parser, harness):
|
|
parser.parse(
|
|
"""
|
|
[Global=Foo, Exposed=Foo]
|
|
interface Foo : Bar {
|
|
getter any(DOMString name);
|
|
};
|
|
[Exposed=Foo]
|
|
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=Foo, Exposed=Foo]
|
|
interface Foo {
|
|
getter any(DOMString name);
|
|
setter undefined(DOMString name, any arg);
|
|
};
|
|
"""
|
|
)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
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=Foo, Exposed=Foo]
|
|
interface Foo {
|
|
getter any(DOMString name);
|
|
deleter undefined(DOMString name);
|
|
};
|
|
"""
|
|
)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
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=Foo, LegacyOverrideBuiltIns, Exposed=Foo]
|
|
interface Foo {
|
|
};
|
|
"""
|
|
)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
threw = True
|
|
|
|
harness.ok(
|
|
threw,
|
|
"Should have thrown for [Global] used on an interface with a "
|
|
"[LegacyOverrideBuiltIns]",
|
|
)
|
|
|
|
parser = parser.reset()
|
|
threw = False
|
|
try:
|
|
parser.parse(
|
|
"""
|
|
[Global=Foo, Exposed=Foo]
|
|
interface Foo : Bar {
|
|
};
|
|
[LegacyOverrideBuiltIns, Exposed=Foo]
|
|
interface Bar {
|
|
};
|
|
"""
|
|
)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
threw = True
|
|
|
|
harness.ok(
|
|
threw,
|
|
"Should have thrown for [Global] used on an interface with an "
|
|
"[LegacyOverrideBuiltIns] ancestor",
|
|
)
|
|
|
|
parser = parser.reset()
|
|
threw = False
|
|
try:
|
|
parser.parse(
|
|
"""
|
|
[Global=Foo, Exposed=Foo]
|
|
interface Foo {
|
|
};
|
|
[Exposed=Foo]
|
|
interface Bar : Foo {
|
|
};
|
|
"""
|
|
)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
threw = True
|
|
|
|
harness.ok(
|
|
threw,
|
|
"Should have thrown for [Global] used on an interface with a " "descendant",
|
|
)
|
|
|
|
parser = parser.reset()
|
|
threw = False
|
|
try:
|
|
parser.parse(
|
|
"""
|
|
[Global, Exposed=Foo]
|
|
interface Foo {
|
|
};
|
|
"""
|
|
)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
threw = True
|
|
|
|
harness.ok(
|
|
threw,
|
|
"Should have thrown for [Global] without a right hand side value",
|
|
)
|