diff options
author | Martin Robinson <mrobinson@igalia.com> | 2023-06-24 13:38:11 +0200 |
---|---|---|
committer | Martin Robinson <mrobinson@igalia.com> | 2023-06-30 09:51:31 +0200 |
commit | 8be014ee46077e78db21c5d73058c35a4ee65fa9 (patch) | |
tree | 9bfd0bc11997381d792fd3015add8be9cd7abd70 /components/script/dom/bindings/codegen/parser/tests/test_interfacemixin.py | |
parent | 7412e28349237055652a08a2216043d0993a3cea (diff) | |
download | servo-8be014ee46077e78db21c5d73058c35a4ee65fa9.tar.gz servo-8be014ee46077e78db21c5d73058c35a4ee65fa9.zip |
Create a top-level "third_party" directory
This directory now contains third_party software that is vendored into
the Servo source tree. The idea is that it would eventually hold
webrender and other crates from mozilla-central as well with a standard
patch management approach for each.
Diffstat (limited to 'components/script/dom/bindings/codegen/parser/tests/test_interfacemixin.py')
-rw-r--r-- | components/script/dom/bindings/codegen/parser/tests/test_interfacemixin.py | 534 |
1 files changed, 0 insertions, 534 deletions
diff --git a/components/script/dom/bindings/codegen/parser/tests/test_interfacemixin.py b/components/script/dom/bindings/codegen/parser/tests/test_interfacemixin.py deleted file mode 100644 index b3c8573fa59..00000000000 --- a/components/script/dom/bindings/codegen/parser/tests/test_interfacemixin.py +++ /dev/null @@ -1,534 +0,0 @@ -import WebIDL - - -def WebIDLTest(parser, harness): - parser.parse("interface mixin Foo { };") - results = parser.finish() - harness.ok(True, "Empty interface mixin parsed without error.") - harness.check(len(results), 1, "Should be one production") - harness.ok( - isinstance(results[0], WebIDL.IDLInterfaceMixin), - "Should be an IDLInterfaceMixin", - ) - mixin = results[0] - harness.check( - mixin.identifier.QName(), "::Foo", "Interface mixin has the right QName" - ) - harness.check(mixin.identifier.name, "Foo", "Interface mixin has the right name") - - parser = parser.reset() - parser.parse( - """ - interface mixin QNameBase { - const long foo = 3; - }; - """ - ) - results = parser.finish() - harness.check(len(results), 1, "Should be one productions") - harness.ok( - isinstance(results[0], WebIDL.IDLInterfaceMixin), - "Should be an IDLInterfaceMixin", - ) - harness.check(len(results[0].members), 1, "Expect 1 productions") - mixin = results[0] - harness.check( - mixin.members[0].identifier.QName(), - "::QNameBase::foo", - "Member has the right QName", - ) - - parser = parser.reset() - parser.parse( - """ - interface mixin A { - readonly attribute boolean x; - undefined foo(); - }; - partial interface mixin A { - readonly attribute boolean y; - undefined foo(long arg); - }; - """ - ) - results = parser.finish() - harness.check( - len(results), 2, "Should have two results with partial interface mixin" - ) - mixin = results[0] - harness.check( - len(mixin.members), 3, "Should have three members with partial interface mixin" - ) - harness.check( - mixin.members[0].identifier.name, - "x", - "First member should be x with partial interface mixin", - ) - harness.check( - mixin.members[1].identifier.name, - "foo", - "Second member should be foo with partial interface mixin", - ) - harness.check( - len(mixin.members[1].signatures()), - 2, - "Should have two foo signatures with partial interface mixin", - ) - harness.check( - mixin.members[2].identifier.name, - "y", - "Third member should be y with partial interface mixin", - ) - - parser = parser.reset() - parser.parse( - """ - partial interface mixin A { - readonly attribute boolean y; - undefined foo(long arg); - }; - interface mixin A { - readonly attribute boolean x; - undefined foo(); - }; - """ - ) - results = parser.finish() - harness.check( - len(results), 2, "Should have two results with reversed partial interface mixin" - ) - mixin = results[1] - harness.check( - len(mixin.members), - 3, - "Should have three members with reversed partial interface mixin", - ) - harness.check( - mixin.members[0].identifier.name, - "x", - "First member should be x with reversed partial interface mixin", - ) - harness.check( - mixin.members[1].identifier.name, - "foo", - "Second member should be foo with reversed partial interface mixin", - ) - harness.check( - len(mixin.members[1].signatures()), - 2, - "Should have two foo signatures with reversed partial interface mixin", - ) - harness.check( - mixin.members[2].identifier.name, - "y", - "Third member should be y with reversed partial interface mixin", - ) - - parser = parser.reset() - parser.parse( - """ - interface Interface {}; - interface mixin Mixin { - attribute short x; - }; - Interface includes Mixin; - """ - ) - results = parser.finish() - iface = results[0] - harness.check(len(iface.members), 1, "Should merge members from mixins") - harness.check( - iface.members[0].identifier.name, "x", "Should merge members from mixins" - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - readonly attribute boolean x; - }; - interface mixin A { - readonly attribute boolean y; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, "Should not allow two non-partial interface mixins with the same name" - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - partial interface mixin A { - readonly attribute boolean x; - }; - partial interface mixin A { - readonly attribute boolean y; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Must have a non-partial interface mixin for a given name") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - dictionary A { - boolean x; - }; - partial interface mixin A { - readonly attribute boolean y; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, - "Should not allow a name collision between partial interface " - "mixin and other object", - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - dictionary A { - boolean x; - }; - interface mixin A { - readonly attribute boolean y; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, - "Should not allow a name collision between interface mixin " "and other object", - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - readonly attribute boolean x; - }; - interface A; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, - "Should not allow a name collision between external interface " - "and interface mixin", - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - [SomeRandomAnnotation] - interface mixin A { - readonly attribute boolean y; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, "Should not allow unknown extended attributes on interface mixins" - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - getter double (DOMString propertyName); - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should not allow getters on interface mixins") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - setter undefined (DOMString propertyName, double propertyValue); - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should not allow setters on interface mixins") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - deleter undefined (DOMString propertyName); - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should not allow deleters on interface mixins") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - legacycaller double compute(double x); - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should not allow legacycallers on interface mixins") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin A { - inherit attribute x; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should not allow inherited attribute on interface mixins") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface Interface {}; - interface NotMixin { - attribute short x; - }; - Interface includes NotMixin; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should fail if the right side does not point an interface mixin") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin NotInterface {}; - interface mixin Mixin { - attribute short x; - }; - NotInterface includes Mixin; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should fail if the left side does not point an interface") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin Mixin { - iterable<DOMString>; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should fail if an interface mixin includes iterable") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin Mixin { - setlike<DOMString>; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should fail if an interface mixin includes setlike") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface mixin Mixin { - maplike<DOMString, DOMString>; - }; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok(threw, "Should fail if an interface mixin includes maplike") - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface Interface { - attribute short attr; - }; - interface mixin Mixin { - attribute short attr; - }; - Interface includes Mixin; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, "Should fail if the included mixin interface has duplicated member" - ) - - parser = parser.reset() - threw = False - try: - parser.parse( - """ - interface Interface {}; - interface mixin Mixin1 { - attribute short attr; - }; - interface mixin Mixin2 { - attribute short attr; - }; - Interface includes Mixin1; - Interface includes Mixin2; - """ - ) - results = parser.finish() - except: - threw = True - harness.ok( - threw, "Should fail if the included mixin interfaces have duplicated member" - ) - - parser = parser.reset() - parser.parse( - """ - [Global, Exposed=Window] interface Window {}; - [Global, Exposed=Worker] interface Worker {}; - [Exposed=Window] - interface Base {}; - interface mixin Mixin { - Base returnSelf(); - }; - Base includes Mixin; - """ - ) - results = parser.finish() - base = results[2] - attr = base.members[0] - harness.check( - attr.exposureSet, - set(["Window"]), - "Should expose on globals where the base interfaces are exposed", - ) - - parser = parser.reset() - parser.parse( - """ - [Global, Exposed=Window] interface Window {}; - [Global, Exposed=Worker] interface Worker {}; - [Exposed=Window] - interface Base {}; - [Exposed=Window] - interface mixin Mixin { - attribute short a; - }; - Base includes Mixin; - """ - ) - results = parser.finish() - base = results[2] - attr = base.members[0] - harness.check( - attr.exposureSet, set(["Window"]), "Should follow [Exposed] on interface mixin" - ) - - parser = parser.reset() - parser.parse( - """ - [Global, Exposed=Window] interface Window {}; - [Global, Exposed=Worker] interface Worker {}; - [Exposed=Window] - interface Base1 {}; - [Exposed=Worker] - interface Base2 {}; - interface mixin Mixin { - attribute short a; - }; - Base1 includes Mixin; - Base2 includes Mixin; - """ - ) - results = parser.finish() - base = results[2] - attr = base.members[0] - harness.check( - attr.exposureSet, - set(["Window", "Worker"]), - "Should expose on all globals where including interfaces are " "exposed", - ) - base = results[3] - attr = base.members[0] - harness.check( - attr.exposureSet, - set(["Window", "Worker"]), - "Should expose on all globals where including interfaces are " "exposed", - ) |