mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-01-03 20:30:00 +00:00
81 lines
3.4 KiB
Python
81 lines
3.4 KiB
Python
import WebIDL
|
|
|
|
expected = [
|
|
("::TestConsts::zero", "zero", "Byte", 0),
|
|
("::TestConsts::b", "b", "Byte", -1),
|
|
("::TestConsts::o", "o", "Octet", 2),
|
|
("::TestConsts::s", "s", "Short", -3),
|
|
("::TestConsts::us", "us", "UnsignedShort", 4),
|
|
("::TestConsts::l", "l", "Long", -5),
|
|
("::TestConsts::ul", "ul", "UnsignedLong", 6),
|
|
("::TestConsts::ull", "ull", "UnsignedLongLong", 7),
|
|
("::TestConsts::ll", "ll", "LongLong", -8),
|
|
("::TestConsts::t", "t", "Boolean", True),
|
|
("::TestConsts::f", "f", "Boolean", False),
|
|
("::TestConsts::n", "n", "BooleanOrNull", None),
|
|
("::TestConsts::nt", "nt", "BooleanOrNull", True),
|
|
("::TestConsts::nf", "nf", "BooleanOrNull", False),
|
|
("::TestConsts::fl", "fl", "Float", 0.2),
|
|
("::TestConsts::db", "db", "Double", 0.2),
|
|
("::TestConsts::ufl", "ufl", "UnrestrictedFloat", 0.2),
|
|
("::TestConsts::udb", "udb", "UnrestrictedDouble", 0.2),
|
|
("::TestConsts::fli", "fli", "Float", 2),
|
|
("::TestConsts::dbi", "dbi", "Double", 2),
|
|
("::TestConsts::ufli", "ufli", "UnrestrictedFloat", 2),
|
|
("::TestConsts::udbi", "udbi", "UnrestrictedDouble", 2),
|
|
]
|
|
|
|
def WebIDLTest(parser, harness):
|
|
parser.parse("""
|
|
interface TestConsts {
|
|
const byte zero = 0;
|
|
const byte b = -1;
|
|
const octet o = 2;
|
|
const short s = -3;
|
|
const unsigned short us = 0x4;
|
|
const long l = -0X5;
|
|
const unsigned long ul = 6;
|
|
const unsigned long long ull = 7;
|
|
const long long ll = -010;
|
|
const boolean t = true;
|
|
const boolean f = false;
|
|
const boolean? n = null;
|
|
const boolean? nt = true;
|
|
const boolean? nf = false;
|
|
const float fl = 0.2;
|
|
const double db = 0.2;
|
|
const unrestricted float ufl = 0.2;
|
|
const unrestricted double udb = 0.2;
|
|
const float fli = 2;
|
|
const double dbi = 2;
|
|
const unrestricted float ufli = 2;
|
|
const unrestricted double udbi = 2;
|
|
};
|
|
""")
|
|
|
|
results = parser.finish()
|
|
|
|
harness.ok(True, "TestConsts interface parsed without error.")
|
|
harness.check(len(results), 1, "Should be one production.")
|
|
iface = results[0]
|
|
harness.ok(isinstance(iface, WebIDL.IDLInterface),
|
|
"Should be an IDLInterface")
|
|
harness.check(iface.identifier.QName(), "::TestConsts", "Interface has the right QName")
|
|
harness.check(iface.identifier.name, "TestConsts", "Interface has the right name")
|
|
harness.check(len(iface.members), len(expected), "Expect %s members" % len(expected))
|
|
|
|
for (const, (QName, name, type, value)) in zip(iface.members, expected):
|
|
harness.ok(isinstance(const, WebIDL.IDLConst),
|
|
"Should be an IDLConst")
|
|
harness.ok(const.isConst(), "Const is a const")
|
|
harness.ok(not const.isAttr(), "Const is not an attr")
|
|
harness.ok(not const.isMethod(), "Const is not a method")
|
|
harness.check(const.identifier.QName(), QName, "Const has the right QName")
|
|
harness.check(const.identifier.name, name, "Const has the right name")
|
|
harness.check(str(const.type), type, "Const has the right type")
|
|
harness.ok(const.type.isPrimitive(), "All consts should be primitive")
|
|
harness.check(str(const.value.type), str(const.type),
|
|
"Const's value has the same type as the type")
|
|
harness.check(const.value.value, value, "Const value has the right value.")
|
|
|