aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen/parser/tests/test_promise.py
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2017-06-09 13:57:30 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2017-06-09 13:57:30 +0200
commite566bc7b1c65e54601f5420bfa071bab9c1b83a3 (patch)
tree2abe85bfa380bcdc594f83f1898012d33d8147bf /components/script/dom/bindings/codegen/parser/tests/test_promise.py
parent243967298312efa892bed42c421e74f221a99ddd (diff)
downloadservo-e566bc7b1c65e54601f5420bfa071bab9c1b83a3.tar.gz
servo-e566bc7b1c65e54601f5420bfa071bab9c1b83a3.zip
Update the WebIDL parser
Diffstat (limited to 'components/script/dom/bindings/codegen/parser/tests/test_promise.py')
-rw-r--r--components/script/dom/bindings/codegen/parser/tests/test_promise.py102
1 files changed, 98 insertions, 4 deletions
diff --git a/components/script/dom/bindings/codegen/parser/tests/test_promise.py b/components/script/dom/bindings/codegen/parser/tests/test_promise.py
index 55bc0768092..43c74029dc5 100644
--- a/components/script/dom/bindings/codegen/parser/tests/test_promise.py
+++ b/components/script/dom/bindings/codegen/parser/tests/test_promise.py
@@ -2,7 +2,6 @@ def WebIDLTest(parser, harness):
threw = False
try:
parser.parse("""
- interface _Promise {};
interface A {
legacycaller Promise<any> foo();
};
@@ -18,7 +17,6 @@ def WebIDLTest(parser, harness):
threw = False
try:
parser.parse("""
- interface _Promise {};
interface A {
Promise<any> foo();
long foo(long arg);
@@ -35,7 +33,6 @@ def WebIDLTest(parser, harness):
threw = False
try:
parser.parse("""
- interface _Promise {};
interface A {
long foo(long arg);
Promise<any> foo();
@@ -49,8 +46,35 @@ def WebIDLTest(parser, harness):
"non-Promise return types.")
parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ Promise<any>? foo();
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow nullable Promise return values.")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ void foo(Promise<any>? arg);
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow nullable Promise arguments.")
+
+ parser = parser.reset()
parser.parse("""
- interface _Promise {};
interface A {
Promise<any> foo();
Promise<any> foo(long arg);
@@ -61,3 +85,73 @@ def WebIDLTest(parser, harness):
harness.ok(True,
"Should allow overloads which only have Promise and return "
"types.")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ attribute Promise<any> attr;
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow writable Promise-typed attributes.")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ [LenientSetter] readonly attribute Promise<any> attr;
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow [LenientSetter] Promise-typed attributes.")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ [PutForwards=bar] readonly attribute Promise<any> attr;
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow [PutForwards] Promise-typed attributes.")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ [Replaceable] readonly attribute Promise<any> attr;
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow [Replaceable] Promise-typed attributes.")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ [SameObject] readonly attribute Promise<any> attr;
+ };
+ """)
+ results = parser.finish();
+ except:
+ threw = True
+ harness.ok(threw,
+ "Should not allow [SameObject] Promise-typed attributes.")