1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/xpcom/idl-parser/runtests.py Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,98 @@ 1.4 +#!/usr/bin/env python 1.5 +# 1.6 +# Any copyright is dedicated to the Public Domain. 1.7 +# http://creativecommons.org/publicdomain/zero/1.0/ 1.8 +# 1.9 +# Unit tests for xpidl.py 1.10 + 1.11 +import mozunit 1.12 +import unittest 1.13 +import xpidl 1.14 + 1.15 +class TestParser(unittest.TestCase): 1.16 + def setUp(self): 1.17 + self.p = xpidl.IDLParser() 1.18 + 1.19 + def testEmpty(self): 1.20 + i = self.p.parse("", filename='f') 1.21 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.22 + self.assertEqual([], i.productions) 1.23 + 1.24 + def testForwardInterface(self): 1.25 + i = self.p.parse("interface foo;", filename='f') 1.26 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.27 + self.assertTrue(isinstance(i.productions[0], xpidl.Forward)) 1.28 + self.assertEqual("foo", i.productions[0].name) 1.29 + 1.30 + def testInterface(self): 1.31 + i = self.p.parse("[uuid(abc)] interface foo {};", filename='f') 1.32 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.33 + self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) 1.34 + self.assertEqual("foo", i.productions[0].name) 1.35 + 1.36 + def testAttributes(self): 1.37 + i = self.p.parse("[scriptable, builtinclass, function, deprecated, uuid(abc)] interface foo {};", filename='f') 1.38 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.39 + self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) 1.40 + iface = i.productions[0] 1.41 + self.assertEqual("foo", iface.name) 1.42 + self.assertTrue(iface.attributes.scriptable) 1.43 + self.assertTrue(iface.attributes.builtinclass) 1.44 + self.assertTrue(iface.attributes.function) 1.45 + self.assertTrue(iface.attributes.deprecated) 1.46 + 1.47 + i = self.p.parse("[noscript, uuid(abc)] interface foo {};", filename='f') 1.48 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.49 + self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) 1.50 + iface = i.productions[0] 1.51 + self.assertEqual("foo", iface.name) 1.52 + self.assertTrue(iface.attributes.noscript) 1.53 + 1.54 + def testMethod(self): 1.55 + i = self.p.parse("""[uuid(abc)] interface foo { 1.56 +void bar(); 1.57 +};""", filename='f') 1.58 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.59 + self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) 1.60 + iface = i.productions[0] 1.61 + m = iface.members[0] 1.62 + self.assertTrue(isinstance(m, xpidl.Method)) 1.63 + self.assertEqual("bar", m.name) 1.64 + self.assertEqual("void", m.type) 1.65 + 1.66 + def testMethodParams(self): 1.67 + i = self.p.parse("""[uuid(abc)] interface foo { 1.68 +long bar(in long a, in float b, [array] in long c); 1.69 +};""", filename='f') 1.70 + i.resolve([], self.p) 1.71 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.72 + self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) 1.73 + iface = i.productions[0] 1.74 + m = iface.members[0] 1.75 + self.assertTrue(isinstance(m, xpidl.Method)) 1.76 + self.assertEqual("bar", m.name) 1.77 + self.assertEqual("long", m.type) 1.78 + self.assertEqual(3, len(m.params)) 1.79 + self.assertEqual("long", m.params[0].type) 1.80 + self.assertEqual("in", m.params[0].paramtype) 1.81 + self.assertEqual("float", m.params[1].type) 1.82 + self.assertEqual("in", m.params[1].paramtype) 1.83 + self.assertEqual("long", m.params[2].type) 1.84 + self.assertEqual("in", m.params[2].paramtype) 1.85 + self.assertTrue(isinstance(m.params[2].realtype, xpidl.Array)) 1.86 + self.assertEqual("long", m.params[2].realtype.type.name) 1.87 + 1.88 + def testAttribute(self): 1.89 + i = self.p.parse("""[uuid(abc)] interface foo { 1.90 +attribute long bar; 1.91 +};""", filename='f') 1.92 + self.assertTrue(isinstance(i, xpidl.IDL)) 1.93 + self.assertTrue(isinstance(i.productions[0], xpidl.Interface)) 1.94 + iface = i.productions[0] 1.95 + a = iface.members[0] 1.96 + self.assertTrue(isinstance(a, xpidl.Attribute)) 1.97 + self.assertEqual("bar", a.name) 1.98 + self.assertEqual("long", a.type) 1.99 + 1.100 +if __name__ == '__main__': 1.101 + mozunit.main()