| #!/usr/bin/env python |
| # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import glob |
| import unittest |
| |
| from idl_lexer import IDLLexer |
| from idl_parser import IDLParser, ParseFile |
| from idl_ppapi_lexer import IDLPPAPILexer |
| from idl_ppapi_parser import IDLPPAPIParser |
| |
| def ParseCommentTest(comment): |
| comment = comment.strip() |
| comments = comment.split(None, 1) |
| return comments[0], comments[1] |
| |
| |
| class WebIDLParser(unittest.TestCase): |
| def setUp(self): |
| self.parser = IDLParser(IDLLexer(), mute_error=True) |
| self.filenames = glob.glob('test_parser/*_web.idl') |
| |
| def _TestNode(self, node): |
| comments = node.GetListOf('Comment') |
| for comment in comments: |
| check, value = ParseCommentTest(comment.GetName()) |
| if check == 'BUILD': |
| msg = 'Expecting %s, but found %s.\n' % (value, str(node)) |
| self.assertEqual(value, str(node), msg) |
| |
| if check == 'ERROR': |
| msg = node.GetLogLine('Expecting\n\t%s\nbut found \n\t%s\n' % ( |
| value, str(node))) |
| self.assertEqual(value, node.GetName(), msg) |
| |
| if check == 'PROP': |
| key, expect = value.split('=') |
| actual = str(node.GetProperty(key)) |
| msg = 'Mismatched property %s: %s vs %s.\n' % (key, expect, actual) |
| self.assertEqual(expect, actual, msg) |
| |
| if check == 'TREE': |
| quick = '\n'.join(node.Tree()) |
| lineno = node.GetProperty('LINENO') |
| msg = 'Mismatched tree at line %d:\n%sVS\n%s' % (lineno, value, quick) |
| self.assertEqual(value, quick, msg) |
| |
| @unittest.skip("failing ") |
| def testExpectedNodes(self): |
| for filename in self.filenames: |
| filenode = ParseFile(self.parser, filename) |
| children = filenode.GetChildren() |
| self.assertTrue(len(children) > 2, 'Expecting children in %s.' % |
| filename) |
| |
| for node in filenode.GetChildren()[2:]: |
| self._TestNode(node) |
| |
| @unittest.skip("Not supported in Cobalt") |
| class PepperIDLParser(unittest.TestCase): |
| def setUp(self): |
| self.parser = IDLPPAPIParser(IDLPPAPILexer(), mute_error=True) |
| self.filenames = glob.glob('test_parser/*_ppapi.idl') |
| |
| def _TestNode(self, filename, node): |
| comments = node.GetListOf('Comment') |
| for comment in comments: |
| check, value = ParseCommentTest(comment.GetName()) |
| if check == 'BUILD': |
| msg = '%s - Expecting %s, but found %s.\n' % ( |
| filename, value, str(node)) |
| self.assertEqual(value, str(node), msg) |
| |
| if check == 'ERROR': |
| msg = node.GetLogLine('%s - Expecting\n\t%s\nbut found \n\t%s\n' % ( |
| filename, value, str(node))) |
| self.assertEqual(value, node.GetName(), msg) |
| |
| if check == 'PROP': |
| key, expect = value.split('=') |
| actual = str(node.GetProperty(key)) |
| msg = '%s - Mismatched property %s: %s vs %s.\n' % ( |
| filename, key, expect, actual) |
| self.assertEqual(expect, actual, msg) |
| |
| if check == 'TREE': |
| quick = '\n'.join(node.Tree()) |
| lineno = node.GetProperty('LINENO') |
| msg = '%s - Mismatched tree at line %d:\n%sVS\n%s' % ( |
| filename, lineno, value, quick) |
| self.assertEqual(value, quick, msg) |
| |
| def testExpectedNodes(self): |
| for filename in self.filenames: |
| filenode = ParseFile(self.parser, filename) |
| children = filenode.GetChildren() |
| self.assertTrue(len(children) > 2, 'Expecting children in %s.' % |
| filename) |
| |
| for node in filenode.GetChildren()[2:]: |
| self._TestNode(filename, node) |
| |
| if __name__ == '__main__': |
| unittest.main(verbosity=2) |
| |