Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | #!/usr/bin/env python |
michael@0 | 2 | # |
michael@0 | 3 | # Any copyright is dedicated to the Public Domain. |
michael@0 | 4 | # http://creativecommons.org/publicdomain/zero/1.0/ |
michael@0 | 5 | # |
michael@0 | 6 | # Unit tests for xpidl.py |
michael@0 | 7 | |
michael@0 | 8 | import mozunit |
michael@0 | 9 | import unittest |
michael@0 | 10 | import xpidl |
michael@0 | 11 | |
michael@0 | 12 | class TestParser(unittest.TestCase): |
michael@0 | 13 | def setUp(self): |
michael@0 | 14 | self.p = xpidl.IDLParser() |
michael@0 | 15 | |
michael@0 | 16 | def testEmpty(self): |
michael@0 | 17 | i = self.p.parse("", filename='f') |
michael@0 | 18 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 19 | self.assertEqual([], i.productions) |
michael@0 | 20 | |
michael@0 | 21 | def testForwardInterface(self): |
michael@0 | 22 | i = self.p.parse("interface foo;", filename='f') |
michael@0 | 23 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 24 | self.assertTrue(isinstance(i.productions[0], xpidl.Forward)) |
michael@0 | 25 | self.assertEqual("foo", i.productions[0].name) |
michael@0 | 26 | |
michael@0 | 27 | def testInterface(self): |
michael@0 | 28 | i = self.p.parse("[uuid(abc)] interface foo {};", filename='f') |
michael@0 | 29 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 30 | self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) |
michael@0 | 31 | self.assertEqual("foo", i.productions[0].name) |
michael@0 | 32 | |
michael@0 | 33 | def testAttributes(self): |
michael@0 | 34 | i = self.p.parse("[scriptable, builtinclass, function, deprecated, uuid(abc)] interface foo {};", filename='f') |
michael@0 | 35 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 36 | self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) |
michael@0 | 37 | iface = i.productions[0] |
michael@0 | 38 | self.assertEqual("foo", iface.name) |
michael@0 | 39 | self.assertTrue(iface.attributes.scriptable) |
michael@0 | 40 | self.assertTrue(iface.attributes.builtinclass) |
michael@0 | 41 | self.assertTrue(iface.attributes.function) |
michael@0 | 42 | self.assertTrue(iface.attributes.deprecated) |
michael@0 | 43 | |
michael@0 | 44 | i = self.p.parse("[noscript, uuid(abc)] interface foo {};", filename='f') |
michael@0 | 45 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 46 | self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) |
michael@0 | 47 | iface = i.productions[0] |
michael@0 | 48 | self.assertEqual("foo", iface.name) |
michael@0 | 49 | self.assertTrue(iface.attributes.noscript) |
michael@0 | 50 | |
michael@0 | 51 | def testMethod(self): |
michael@0 | 52 | i = self.p.parse("""[uuid(abc)] interface foo { |
michael@0 | 53 | void bar(); |
michael@0 | 54 | };""", filename='f') |
michael@0 | 55 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 56 | self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) |
michael@0 | 57 | iface = i.productions[0] |
michael@0 | 58 | m = iface.members[0] |
michael@0 | 59 | self.assertTrue(isinstance(m, xpidl.Method)) |
michael@0 | 60 | self.assertEqual("bar", m.name) |
michael@0 | 61 | self.assertEqual("void", m.type) |
michael@0 | 62 | |
michael@0 | 63 | def testMethodParams(self): |
michael@0 | 64 | i = self.p.parse("""[uuid(abc)] interface foo { |
michael@0 | 65 | long bar(in long a, in float b, [array] in long c); |
michael@0 | 66 | };""", filename='f') |
michael@0 | 67 | i.resolve([], self.p) |
michael@0 | 68 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 69 | self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) |
michael@0 | 70 | iface = i.productions[0] |
michael@0 | 71 | m = iface.members[0] |
michael@0 | 72 | self.assertTrue(isinstance(m, xpidl.Method)) |
michael@0 | 73 | self.assertEqual("bar", m.name) |
michael@0 | 74 | self.assertEqual("long", m.type) |
michael@0 | 75 | self.assertEqual(3, len(m.params)) |
michael@0 | 76 | self.assertEqual("long", m.params[0].type) |
michael@0 | 77 | self.assertEqual("in", m.params[0].paramtype) |
michael@0 | 78 | self.assertEqual("float", m.params[1].type) |
michael@0 | 79 | self.assertEqual("in", m.params[1].paramtype) |
michael@0 | 80 | self.assertEqual("long", m.params[2].type) |
michael@0 | 81 | self.assertEqual("in", m.params[2].paramtype) |
michael@0 | 82 | self.assertTrue(isinstance(m.params[2].realtype, xpidl.Array)) |
michael@0 | 83 | self.assertEqual("long", m.params[2].realtype.type.name) |
michael@0 | 84 | |
michael@0 | 85 | def testAttribute(self): |
michael@0 | 86 | i = self.p.parse("""[uuid(abc)] interface foo { |
michael@0 | 87 | attribute long bar; |
michael@0 | 88 | };""", filename='f') |
michael@0 | 89 | self.assertTrue(isinstance(i, xpidl.IDL)) |
michael@0 | 90 | self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) |
michael@0 | 91 | iface = i.productions[0] |
michael@0 | 92 | a = iface.members[0] |
michael@0 | 93 | self.assertTrue(isinstance(a, xpidl.Attribute)) |
michael@0 | 94 | self.assertEqual("bar", a.name) |
michael@0 | 95 | self.assertEqual("long", a.type) |
michael@0 | 96 | |
michael@0 | 97 | if __name__ == '__main__': |
michael@0 | 98 | mozunit.main() |