| #!/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 logging.config | |
| import unittest | |
| import templateloader | |
| class TemplateLoaderTestCase(unittest.TestCase): | |
| def _preprocess(self, input_text, conds): | |
| loader = templateloader.TemplateLoader('.', [], conds) | |
| return loader._Preprocess(input_text, '<file>') | |
| def _preprocess_test(self, input_text, conds, expected_text): | |
| output_text = self._preprocess(input_text, conds) | |
| if output_text != expected_text: | |
| msg = ''' | |
| EXPECTED: | |
| %s | |
| --- | |
| ACTUAL : | |
| %s | |
| ---''' % (expected_text, output_text) | |
| self.fail(msg) | |
| def _preprocess_error_test(self, input_text, conds, expected_message): | |
| threw = False | |
| try: | |
| output_text = self._preprocess(input_text, conds) | |
| except Exception, e: | |
| threw = True | |
| if str(e).find(expected_message) == -1: | |
| self.fail("'%s' does not contain '%s'" % (e, expected_message)) | |
| if not threw: | |
| self.fail("missing error, expected '%s'" % expected_message) | |
| def test_freevar(self): | |
| input_text = '''$A | |
| $B''' | |
| self._preprocess_test(input_text, {}, input_text) | |
| def test_ite1(self): | |
| input_text = ''' | |
| aaa | |
| $if A | |
| bbb | |
| $else | |
| ccc | |
| $endif | |
| ddd | |
| ''' | |
| self._preprocess_test(input_text, {'A':True}, | |
| ''' | |
| aaa | |
| bbb | |
| ddd | |
| ''') | |
| def test_ite2(self): | |
| input_text = ''' | |
| aaa | |
| $if A | |
| bbb | |
| $else | |
| ccc | |
| $endif | |
| ddd | |
| ''' | |
| self._preprocess_test(input_text, {'A':False}, | |
| ''' | |
| aaa | |
| ccc | |
| ddd | |
| ''') | |
| def test_if1(self): | |
| input_text = ''' | |
| $if | |
| ''' | |
| self._preprocess_error_test(input_text, {}, | |
| '$if does not have single variable') | |
| def test_if2(self): | |
| input_text = ''' | |
| $if A | |
| ''' | |
| self._preprocess_error_test(input_text, {}, 'Unknown $if variable') | |
| def test_else1(self): | |
| input_text = ''' | |
| $else | |
| ''' | |
| self._preprocess_error_test(input_text, {}, '$else without $if') | |
| def test_else2(self): | |
| input_text = ''' | |
| $if A | |
| $else | |
| $else | |
| ''' | |
| self._preprocess_error_test(input_text, {'A':True}, 'Double $else') | |
| def test_eof1(self): | |
| input_text = ''' | |
| $if A | |
| ''' | |
| self._preprocess_error_test(input_text, {'A':True}, 'Unterminated') | |
| def test_eof2(self): | |
| input_text = ''' | |
| $if A | |
| $else | |
| ''' | |
| self._preprocess_error_test(input_text, {'A':True}, 'Unterminated') | |
| if __name__ == "__main__": | |
| logging.config.fileConfig("logging.conf") | |
| if __name__ == '__main__': | |
| unittest.main() |