summaryrefslogtreecommitdiffstats
path: root/dom/bindings/parser/tests/test_lenientSetter.py
diff options
context:
space:
mode:
Diffstat (limited to 'dom/bindings/parser/tests/test_lenientSetter.py')
-rw-r--r--dom/bindings/parser/tests/test_lenientSetter.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/dom/bindings/parser/tests/test_lenientSetter.py b/dom/bindings/parser/tests/test_lenientSetter.py
new file mode 100644
index 0000000000..1d2a9f06ce
--- /dev/null
+++ b/dom/bindings/parser/tests/test_lenientSetter.py
@@ -0,0 +1,84 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+def should_throw(parser, harness, message, code):
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse(code)
+ parser.finish()
+ except Exception:
+ threw = True
+
+ harness.ok(threw, "Should have thrown: %s" % message)
+
+
+def WebIDLTest(parser, harness):
+ # The [LegacyLenientSetter] extended attribute MUST take no arguments.
+ should_throw(
+ parser,
+ harness,
+ "no arguments",
+ """
+ interface I {
+ [LegacyLenientSetter=X] readonly attribute long A;
+ };
+ """,
+ )
+
+ # An attribute with the [LegacyLenientSetter] extended attribute MUST NOT
+ # also be declared with the [PutForwards] extended attribute.
+ should_throw(
+ parser,
+ harness,
+ "PutForwards",
+ """
+ interface I {
+ [PutForwards=B, LegacyLenientSetter] readonly attribute J A;
+ };
+ interface J {
+ attribute long B;
+ };
+ """,
+ )
+
+ # An attribute with the [LegacyLenientSetter] extended attribute MUST NOT
+ # also be declared with the [Replaceable] extended attribute.
+ should_throw(
+ parser,
+ harness,
+ "Replaceable",
+ """
+ interface I {
+ [Replaceable, LegacyLenientSetter] readonly attribute J A;
+ };
+ """,
+ )
+
+ # The [LegacyLenientSetter] extended attribute MUST NOT be used on an
+ # attribute that is not read only.
+ should_throw(
+ parser,
+ harness,
+ "writable attribute",
+ """
+ interface I {
+ [LegacyLenientSetter] attribute long A;
+ };
+ """,
+ )
+
+ # The [LegacyLenientSetter] extended attribute MUST NOT be used on a
+ # static attribute.
+ should_throw(
+ parser,
+ harness,
+ "static attribute",
+ """
+ interface I {
+ [LegacyLenientSetter] static readonly attribute long A;
+ };
+ """,
+ )