1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
import WebIDL
def WebIDLTest(parser, harness):
parser.parse(
"""
[LegacyNoInterfaceObject]
interface TestExtendedAttr {
[LegacyUnforgeable] readonly attribute byte b;
};
"""
)
parser.finish()
parser = parser.reset()
parser.parse(
"""
[Pref="foo.bar",Pref=flop]
interface TestExtendedAttr {
[Pref="foo.bar"] attribute byte b;
};
"""
)
parser.finish()
parser = parser.reset()
parser.parse(
"""
interface TestLegacyLenientThis {
[LegacyLenientThis] attribute byte b;
};
"""
)
results = parser.finish()
harness.ok(
results[0].members[0].hasLegacyLenientThis(), "Should have a lenient this"
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
interface TestLegacyLenientThis2 {
[LegacyLenientThis=something] attribute byte b;
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(threw, "[LegacyLenientThis] must take no arguments")
parser = parser.reset()
parser.parse(
"""
interface TestClamp {
undefined testClamp([Clamp] long foo);
undefined testNotClamp(long foo);
};
"""
)
results = parser.finish()
# Pull out the first argument out of the arglist of the first (and
# only) signature.
harness.ok(
results[0].members[0].signatures()[0][1][0].type.hasClamp(), "Should be clamped"
)
harness.ok(
not results[0].members[1].signatures()[0][1][0].type.hasClamp(),
"Should not be clamped",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
interface TestClamp2 {
undefined testClamp([Clamp=something] long foo);
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(threw, "[Clamp] must take no arguments")
parser = parser.reset()
parser.parse(
"""
interface TestEnforceRange {
undefined testEnforceRange([EnforceRange] long foo);
undefined testNotEnforceRange(long foo);
};
"""
)
results = parser.finish()
# Pull out the first argument out of the arglist of the first (and
# only) signature.
harness.ok(
results[0].members[0].signatures()[0][1][0].type.hasEnforceRange(),
"Should be enforceRange",
)
harness.ok(
not results[0].members[1].signatures()[0][1][0].type.hasEnforceRange(),
"Should not be enforceRange",
)
parser = parser.reset()
threw = False
try:
parser.parse(
"""
interface TestEnforceRange2 {
undefined testEnforceRange([EnforceRange=something] long foo);
};
"""
)
parser.finish()
except WebIDL.WebIDLError:
threw = True
harness.ok(threw, "[EnforceRange] must take no arguments")
|