diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2013-05-28 17:13:40 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2013-05-28 17:13:40 -0700 |
commit | bf82bc54f349dd0944c37129af28dec6b43041fe (patch) | |
tree | 685e113347e8afd1965793aefc9743cd9f1f8494 /src/components/script/dom/bindings/codegen/parser/tests/test_attr.py | |
parent | 0ea1a94f8e8a07378d23552a620a45d610db31c7 (diff) | |
download | servo-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.py | 302 |
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") |