#!/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 idlrenderer import logging.config import unittest class IDLRendererTestCase(unittest.TestCase): def _run_test(self, input_text, expected_text): """Parses input, renders it and compares the results""" parser = idlparser.IDLParser(idlparser.FREMONTCUT_SYNTAX) idl_file = idlnode.IDLFile(parser.parse(input_text)) output_text = idlrenderer.render(idl_file) if output_text != expected_text: msg = ''' EXPECTED: %s ACTUAL : %s ''' % (expected_text, output_text) self.fail(msg) def test_rendering(self): input_text = \ '''module M { [Constructor(long x)] interface I : @A J, K { attribute int attr; readonly attribute long attr2; getter attribute int get_attr; setter attribute int set_attr; [A,B=123] void function(in long x, in optional boolean y); const boolean CONST = 1; @A @B() @C(x) @D(x=1) @E(x,y=2) void something(); }; }; @X module M2 { @Y interface I {}; };''' expected_text = \ '''module M { [Constructor(in long x)] interface I : @A J, K { /* Constants */ const boolean CONST = 1; /* Attributes */ attribute int attr; attribute long attr2; getter attribute int get_attr; setter attribute int set_attr; /* Operations */ [A, B=123] void function(in long x, in optional boolean y); @A @B @C(x) @D(x=1) @E(x, y=2) void something(); }; }; @X module M2 { @Y interface I { }; }; ''' self._run_test(input_text, expected_text) if __name__ == "__main__": logging.config.fileConfig("logging.conf") if __name__ == '__main__': unittest.main()