aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/parser/tests/test_attr.py
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-05-28 17:13:40 -0700
committerPatrick Walton <pcwalton@mimiga.net>2013-05-28 17:13:40 -0700
commitbf82bc54f349dd0944c37129af28dec6b43041fe (patch)
tree685e113347e8afd1965793aefc9743cd9f1f8494 /src/components/script/dom/bindings/codegen/parser/tests/test_attr.py
parent0ea1a94f8e8a07378d23552a620a45d610db31c7 (diff)
downloadservo-bf82bc54f349dd0944c37129af28dec6b43041fe.tar.gz
servo-bf82bc54f349dd0944c37129af28dec6b43041fe.zip
Separate the DOM and layout into separate crates.
Diffstat (limited to 'src/components/script/dom/bindings/codegen/parser/tests/test_attr.py')
-rw-r--r--src/components/script/dom/bindings/codegen/parser/tests/test_attr.py302
1 files changed, 302 insertions, 0 deletions
diff --git a/src/components/script/dom/bindings/codegen/parser/tests/test_attr.py b/src/components/script/dom/bindings/codegen/parser/tests/test_attr.py
new file mode 100644
index 00000000000..6b6142b6243
--- /dev/null
+++ b/src/components/script/dom/bindings/codegen/parser/tests/test_attr.py
@@ -0,0 +1,302 @@
+import WebIDL
+
+def WebIDLTest(parser, harness):
+ testData = [("::TestAttr%s::b", "b", "Byte%s", False),
+ ("::TestAttr%s::rb", "rb", "Byte%s", True),
+ ("::TestAttr%s::o", "o", "Octet%s", False),
+ ("::TestAttr%s::ro", "ro", "Octet%s", True),
+ ("::TestAttr%s::s", "s", "Short%s", False),
+ ("::TestAttr%s::rs", "rs", "Short%s", True),
+ ("::TestAttr%s::us", "us", "UnsignedShort%s", False),
+ ("::TestAttr%s::rus", "rus", "UnsignedShort%s", True),
+ ("::TestAttr%s::l", "l", "Long%s", False),
+ ("::TestAttr%s::rl", "rl", "Long%s", True),
+ ("::TestAttr%s::ul", "ul", "UnsignedLong%s", False),
+ ("::TestAttr%s::rul", "rul", "UnsignedLong%s", True),
+ ("::TestAttr%s::ll", "ll", "LongLong%s", False),
+ ("::TestAttr%s::rll", "rll", "LongLong%s", True),
+ ("::TestAttr%s::ull", "ull", "UnsignedLongLong%s", False),
+ ("::TestAttr%s::rull", "rull", "UnsignedLongLong%s", True),
+ ("::TestAttr%s::str", "str", "String%s", False),
+ ("::TestAttr%s::rstr", "rstr", "String%s", True),
+ ("::TestAttr%s::obj", "obj", "Object%s", False),
+ ("::TestAttr%s::robj", "robj", "Object%s", True),
+ ("::TestAttr%s::object", "object", "Object%s", False),
+ ("::TestAttr%s::f", "f", "Float%s", False),
+ ("::TestAttr%s::rf", "rf", "Float%s", True)]
+
+ parser.parse("""
+ interface TestAttr {
+ attribute byte b;
+ readonly attribute byte rb;
+ attribute octet o;
+ readonly attribute octet ro;
+ attribute short s;
+ readonly attribute short rs;
+ attribute unsigned short us;
+ readonly attribute unsigned short rus;
+ attribute long l;
+ readonly attribute long rl;
+ attribute unsigned long ul;
+ readonly attribute unsigned long rul;
+ attribute long long ll;
+ readonly attribute long long rll;
+ attribute unsigned long long ull;
+ readonly attribute unsigned long long rull;
+ attribute DOMString str;
+ readonly attribute DOMString rstr;
+ attribute object obj;
+ readonly attribute object robj;
+ attribute object _object;
+ attribute float f;
+ readonly attribute float rf;
+ };
+
+ interface TestAttrNullable {
+ attribute byte? b;
+ readonly attribute byte? rb;
+ attribute octet? o;
+ readonly attribute octet? ro;
+ attribute short? s;
+ readonly attribute short? rs;
+ attribute unsigned short? us;
+ readonly attribute unsigned short? rus;
+ attribute long? l;
+ readonly attribute long? rl;
+ attribute unsigned long? ul;
+ readonly attribute unsigned long? rul;
+ attribute long long? ll;
+ readonly attribute long long? rll;
+ attribute unsigned long long? ull;
+ readonly attribute unsigned long long? rull;
+ attribute DOMString? str;
+ readonly attribute DOMString? rstr;
+ attribute object? obj;
+ readonly attribute object? robj;
+ attribute object? _object;
+ attribute float? f;
+ readonly attribute float? rf;
+ };
+
+ interface TestAttrArray {
+ attribute byte[] b;
+ readonly attribute byte[] rb;
+ attribute octet[] o;
+ readonly attribute octet[] ro;
+ attribute short[] s;
+ readonly attribute short[] rs;
+ attribute unsigned short[] us;
+ readonly attribute unsigned short[] rus;
+ attribute long[] l;
+ readonly attribute long[] rl;
+ attribute unsigned long[] ul;
+ readonly attribute unsigned long[] rul;
+ attribute long long[] ll;
+ readonly attribute long long[] rll;
+ attribute unsigned long long[] ull;
+ readonly attribute unsigned long long[] rull;
+ attribute DOMString[] str;
+ readonly attribute DOMString[] rstr;
+ attribute object[] obj;
+ readonly attribute object[] robj;
+ attribute object[] _object;
+ attribute float[] f;
+ readonly attribute float[] rf;
+ };
+
+ interface TestAttrNullableArray {
+ attribute byte[]? b;
+ readonly attribute byte[]? rb;
+ attribute octet[]? o;
+ readonly attribute octet[]? ro;
+ attribute short[]? s;
+ readonly attribute short[]? rs;
+ attribute unsigned short[]? us;
+ readonly attribute unsigned short[]? rus;
+ attribute long[]? l;
+ readonly attribute long[]? rl;
+ attribute unsigned long[]? ul;
+ readonly attribute unsigned long[]? rul;
+ attribute long long[]? ll;
+ readonly attribute long long[]? rll;
+ attribute unsigned long long[]? ull;
+ readonly attribute unsigned long long[]? rull;
+ attribute DOMString[]? str;
+ readonly attribute DOMString[]? rstr;
+ attribute object[]? obj;
+ readonly attribute object[]? robj;
+ attribute object[]? _object;
+ attribute float[]? f;
+ readonly attribute float[]? rf;
+ };
+
+ interface TestAttrArrayOfNullableTypes {
+ attribute byte?[] b;
+ readonly attribute byte?[] rb;
+ attribute octet?[] o;
+ readonly attribute octet?[] ro;
+ attribute short?[] s;
+ readonly attribute short?[] rs;
+ attribute unsigned short?[] us;
+ readonly attribute unsigned short?[] rus;
+ attribute long?[] l;
+ readonly attribute long?[] rl;
+ attribute unsigned long?[] ul;
+ readonly attribute unsigned long?[] rul;
+ attribute long long?[] ll;
+ readonly attribute long long?[] rll;
+ attribute unsigned long long?[] ull;
+ readonly attribute unsigned long long?[] rull;
+ attribute DOMString?[] str;
+ readonly attribute DOMString?[] rstr;
+ attribute object?[] obj;
+ readonly attribute object?[] robj;
+ attribute object?[] _object;
+ attribute float?[] f;
+ readonly attribute float?[] rf;
+ };
+
+ interface TestAttrNullableArrayOfNullableTypes {
+ attribute byte?[]? b;
+ readonly attribute byte?[]? rb;
+ attribute octet?[]? o;
+ readonly attribute octet?[]? ro;
+ attribute short?[]? s;
+ readonly attribute short?[]? rs;
+ attribute unsigned short?[]? us;
+ readonly attribute unsigned short?[]? rus;
+ attribute long?[]? l;
+ readonly attribute long?[]? rl;
+ attribute unsigned long?[]? ul;
+ readonly attribute unsigned long?[]? rul;
+ attribute long long?[]? ll;
+ readonly attribute long long?[]? rll;
+ attribute unsigned long long?[]? ull;
+ readonly attribute unsigned long long?[]? rull;
+ attribute DOMString?[]? str;
+ readonly attribute DOMString?[]? rstr;
+ attribute object?[]? obj;
+ readonly attribute object?[]? robj;
+ attribute object?[]? _object;
+ attribute float?[]? f;
+ readonly attribute float?[]? rf;
+ };
+ """)
+
+ results = parser.finish()
+
+ def checkAttr(attr, QName, name, type, readonly):
+ harness.ok(isinstance(attr, WebIDL.IDLAttribute),
+ "Should be an IDLAttribute")
+ harness.ok(attr.isAttr(), "Attr is an Attr")
+ harness.ok(not attr.isMethod(), "Attr is not an method")
+ harness.ok(not attr.isConst(), "Attr is not a const")
+ harness.check(attr.identifier.QName(), QName, "Attr has the right QName")
+ harness.check(attr.identifier.name, name, "Attr has the right name")
+ harness.check(str(attr.type), type, "Attr has the right type")
+ harness.check(attr.readonly, readonly, "Attr's readonly state is correct")
+
+ harness.ok(True, "TestAttr interface parsed without error.")
+ harness.check(len(results), 6, "Should be six productions.")
+ iface = results[0]
+ harness.ok(isinstance(iface, WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+ harness.check(iface.identifier.QName(), "::TestAttr", "Interface has the right QName")
+ harness.check(iface.identifier.name, "TestAttr", "Interface has the right name")
+ harness.check(len(iface.members), len(testData), "Expect %s members" % len(testData))
+
+ attrs = iface.members
+
+ for i in range(len(attrs)):
+ data = testData[i]
+ attr = attrs[i]
+ (QName, name, type, readonly) = data
+ checkAttr(attr, QName % "", name, type % "", readonly)
+
+ iface = results[1]
+ harness.ok(isinstance(iface, WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+ harness.check(iface.identifier.QName(), "::TestAttrNullable", "Interface has the right QName")
+ harness.check(iface.identifier.name, "TestAttrNullable", "Interface has the right name")
+ harness.check(len(iface.members), len(testData), "Expect %s members" % len(testData))
+
+ attrs = iface.members
+
+ for i in range(len(attrs)):
+ data = testData[i]
+ attr = attrs[i]
+ (QName, name, type, readonly) = data
+ checkAttr(attr, QName % "Nullable", name, type % "OrNull", readonly)
+
+ iface = results[2]
+ harness.ok(isinstance(iface, WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+ harness.check(iface.identifier.QName(), "::TestAttrArray", "Interface has the right QName")
+ harness.check(iface.identifier.name, "TestAttrArray", "Interface has the right name")
+ harness.check(len(iface.members), len(testData), "Expect %s members" % len(testData))
+
+ attrs = iface.members
+
+ for i in range(len(attrs)):
+ data = testData[i]
+ attr = attrs[i]
+ (QName, name, type, readonly) = data
+ checkAttr(attr, QName % "Array", name, type % "Array", readonly)
+
+ iface = results[3]
+ harness.ok(isinstance(iface, WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+ harness.check(iface.identifier.QName(), "::TestAttrNullableArray", "Interface has the right QName")
+ harness.check(iface.identifier.name, "TestAttrNullableArray", "Interface has the right name")
+ harness.check(len(iface.members), len(testData), "Expect %s members" % len(testData))
+
+ attrs = iface.members
+
+ for i in range(len(attrs)):
+ data = testData[i]
+ attr = attrs[i]
+ (QName, name, type, readonly) = data
+ checkAttr(attr, QName % "NullableArray", name, type % "ArrayOrNull", readonly)
+
+ iface = results[4]
+ harness.ok(isinstance(iface, WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+ harness.check(iface.identifier.QName(), "::TestAttrArrayOfNullableTypes", "Interface has the right QName")
+ harness.check(iface.identifier.name, "TestAttrArrayOfNullableTypes", "Interface has the right name")
+ harness.check(len(iface.members), len(testData), "Expect %s members" % len(testData))
+
+ attrs = iface.members
+
+ for i in range(len(attrs)):
+ data = testData[i]
+ attr = attrs[i]
+ (QName, name, type, readonly) = data
+ checkAttr(attr, QName % "ArrayOfNullableTypes", name, type % "OrNullArray", readonly)
+
+ iface = results[5]
+ harness.ok(isinstance(iface, WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+ harness.check(iface.identifier.QName(), "::TestAttrNullableArrayOfNullableTypes", "Interface has the right QName")
+ harness.check(iface.identifier.name, "TestAttrNullableArrayOfNullableTypes", "Interface has the right name")
+ harness.check(len(iface.members), len(testData), "Expect %s members" % len(testData))
+
+ attrs = iface.members
+
+ for i in range(len(attrs)):
+ data = testData[i]
+ attr = attrs[i]
+ (QName, name, type, readonly) = data
+ checkAttr(attr, QName % "NullableArrayOfNullableTypes", name, type % "OrNullArrayOrNull", readonly)
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface A {
+ [SetterInfallible] readonly attribute boolean foo;
+ };
+ """)
+ results = parser.finish()
+ except Exception, x:
+ threw = True
+ harness.ok(threw, "Should not allow [SetterInfallible] on readonly attributes")