xpcom/idl-parser/runtests.py

changeset 0
6474c204b198
     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()

mercurial