Index: client/dom/scripts/idlnode_test.py |
=================================================================== |
--- client/dom/scripts/idlnode_test.py (revision 5796) |
+++ client/dom/scripts/idlnode_test.py (working copy) |
@@ -1,147 +0,0 @@ |
-#!/usr/bin/python |
-# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-# for details. All rights reserved. Use of this source code is governed by a |
-# BSD-style license that can be found in the LICENSE file. |
- |
-import idlnode |
-import idlparser |
-import logging.config |
-import sys |
-import unittest |
- |
- |
-class IDLNodeTestCase(unittest.TestCase): |
- |
- def _run_test(self, syntax, content, expected): |
- """Utility run tests and prints extra contextual information. |
- |
- Args: |
- syntax -- IDL grammar to use (either idlparser.WEBKIT_SYNTAX, |
- WEBIDL_SYNTAX or FREMONTCUT_SYNTAX). If None, will run |
- multiple tests, each with a different syntax. |
- content -- input text for the parser. |
- expected -- expected parse result. |
- """ |
- if syntax is None: |
- self._run_test(idlparser.WEBIDL_SYNTAX, content, expected) |
- self._run_test(idlparser.WEBKIT_SYNTAX, content, expected) |
- self._run_test(idlparser.FREMONTCUT_SYNTAX, content, expected) |
- return |
- |
- actual = None |
- error = None |
- ast = None |
- parseResult = None |
- try: |
- parser = idlparser.IDLParser(syntax) |
- ast = parser.parse(content) |
- node = idlnode.IDLFile(ast) |
- actual = node.to_dict() if node else None |
- except SyntaxError, e: |
- error = e |
- pass |
- if actual == expected: |
- return |
- else: |
- msg = ''' |
-SYNTAX : %s |
-CONTENT : |
-%s |
-EXPECTED: |
-%s |
-ACTUAL : |
-%s |
-ERROR : %s |
-AST : |
-%s |
- ''' % (syntax, content, expected, actual, error, ast) |
- self.fail(msg) |
- |
- def test_empty_module(self): |
- self._run_test( |
- None, |
- 'module TestModule {};', |
- {'modules': [{'id': 'TestModule'}]}) |
- |
- def test_empty_interface(self): |
- self._run_test( |
- None, |
- 'module TestModule { interface Interface1 {}; };', |
- {'modules': [{'interfaces': [{'javascript_binding_name': 'Interface1', 'id': 'Interface1'}], 'id': 'TestModule'}]}) |
- |
- def test_gcc_preprocessor(self): |
- self._run_test( |
- idlparser.WEBKIT_SYNTAX, |
- '#if 1\nmodule TestModule {};\n#endif\n', |
- {'modules': [{'id': 'TestModule'}]}) |
- |
- def test_extended_attributes(self): |
- self._run_test( |
- idlparser.WEBKIT_SYNTAX, |
- 'module M { interface [ExAt1, ExAt2] I {};};', |
- {'modules': [{'interfaces': [{'javascript_binding_name': 'I', 'ext_attrs': {'ExAt1': None, 'ExAt2': None}, 'id': 'I'}], 'id': 'M'}]}) |
- |
- def test_implements_statement(self): |
- self._run_test( |
- idlparser.WEBIDL_SYNTAX, |
- 'module M { X implements Y; };', |
- {'modules': [{'implementsStatements': [{'implementor': {'id': 'X'}, 'implemented': {'id': 'Y'}}], 'id': 'M'}]}) |
- |
- def test_attributes(self): |
- self._run_test( |
- idlparser.WEBIDL_SYNTAX, |
- '''interface I { |
- attribute long a1; |
- readonly attribute DOMString a2; |
- attribute any a3; |
- };''', |
- {'interfaces': [{'javascript_binding_name': 'I', 'attributes': [{'type': {'id': 'long'}, 'id': 'a1'}, {'type': {'id': 'DOMString'}, 'is_read_only': True, 'id': 'a2'}, {'type': {'id': 'any'}, 'id': 'a3'}], 'id': 'I'}]}) |
- |
- def test_operations(self): |
- self._run_test( |
- idlparser.WEBIDL_SYNTAX, |
- '''interface I { |
- [ExAttr] t1 op1(); |
- t2 op2(in int arg1, in long arg2); |
- getter any item(in long index); |
- stringifier name(); |
- };''', |
- {'interfaces': [{'operations': [{'type': {'id': 't1'}, 'ext_attrs': {'ExAttr': None}, 'id': 'op1'}, {'type': {'id': 't2'}, 'id': 'op2', 'arguments': [{'type': {'id': 'int'}, 'id': 'arg1'}, {'type': {'id': 'long'}, 'id': 'arg2'}]}, {'specials': ['getter'], 'type': {'id': 'any'}, 'id': 'item', 'arguments': [{'type': {'id': 'long'}, 'id': 'index'}]}, {'is_stringifier': True, 'type': {'id': 'name'}}], 'javascript_binding_name': 'I', 'id': 'I'}]}) |
- |
- def test_constants(self): |
- self._run_test( |
- None, |
- '''interface I { |
- const long c1 = 0; |
- const long c2 = 1; |
- const long c3 = 0x01; |
- const long c4 = 10; |
- const boolean b1 = false; |
- const boolean b2 = true; |
- };''', |
- {'interfaces': [{'javascript_binding_name': 'I', 'id': 'I', 'constants': [{'type': {'id': 'long'}, 'id': 'c1', 'value': '0'}, {'type': {'id': 'long'}, 'id': 'c2', 'value': '1'}, {'type': {'id': 'long'}, 'id': 'c3', 'value': '0x01'}, {'type': {'id': 'long'}, 'id': 'c4', 'value': '10'}, {'type': {'id': 'boolean'}, 'id': 'b1', 'value': 'false'}, {'type': {'id': 'boolean'}, 'id': 'b2', 'value': 'true'}]}]}) |
- |
- def test_annotations(self): |
- self._run_test( |
- idlparser.FREMONTCUT_SYNTAX, |
- '@Ano1 @Ano2() @Ano3(x=1) @Ano4(x,y=2) interface I {};', |
- {'interfaces': [{'javascript_binding_name': 'I', 'id': 'I', 'annotations': {'Ano4': {'y': '2', 'x': None}, 'Ano1': {}, 'Ano2': {}, 'Ano3': {'x': '1'}}}]}) |
- self._run_test( |
- idlparser.FREMONTCUT_SYNTAX, |
- '''interface I : @Ano1 J { |
- @Ano2 attribute int someAttr; |
- @Ano3 void someOp(); |
- @Ano3 const int someConst = 0; |
- };''', |
- {'interfaces': [{'operations': [{'type': {'id': 'void'}, 'id': 'someOp', 'annotations': {'Ano3': {}}}], 'javascript_binding_name': 'I', 'parents': [{'type': {'id': 'J'}, 'annotations': {'Ano1': {}}}], 'attributes': [{'type': {'id': 'int'}, 'id': 'someAttr', 'annotations': {'Ano2': {}}}], 'id': 'I', 'constants': [{'type': {'id': 'int'}, 'id': 'someConst', 'value': '0', 'annotations': {'Ano3': {}}}]}]}) |
- |
- def test_inheritance(self): |
- self._run_test( |
- None, |
- 'interface Shape {}; interface Rectangle : Shape {}; interface Square : Rectangle, Shape {};', |
- {'interfaces': [{'javascript_binding_name': 'Shape', 'id': 'Shape'}, {'javascript_binding_name': 'Rectangle', 'parents': [{'type': {'id': 'Shape'}}], 'id': 'Rectangle'}, {'javascript_binding_name': 'Square', 'parents': [{'type': {'id': 'Rectangle'}}, {'type': {'id': 'Shape'}}], 'id': 'Square'}]}) |
- |
-if __name__ == "__main__": |
- logging.config.fileConfig("logging.conf") |
- if __name__ == '__main__': |
- unittest.main() |