Index: client/dom/scripts/emitter_test.py |
=================================================================== |
--- client/dom/scripts/emitter_test.py (revision 5796) |
+++ client/dom/scripts/emitter_test.py (working copy) |
@@ -1,100 +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. |
- |
-"""Tests for emitter module.""" |
- |
-import logging.config |
-import unittest |
-import emitter |
- |
- |
-class EmitterTestCase(unittest.TestCase): |
- |
- def setUp(self): |
- pass |
- |
- def tearDown(self): |
- pass |
- |
- def check(self, e, expected): |
- self.assertEquals(''.join(e.Fragments()), expected) |
- |
- def testExample(self): |
- e = emitter.Emitter() |
- body = e.Emit('$TYPE $NAME() {\n' |
- ' $!BODY\n' |
- '}\n', |
- TYPE='int', NAME='foo') |
- body.Emit('return $VALUE;', VALUE='100') |
- self.check(e, |
- 'int foo() {\n' |
- ' return 100;\n' |
- '}\n') |
- |
- def testTemplateErrorDuplicate(self): |
- try: |
- e = emitter.Emitter() |
- b = e.Emit('$(A)$(!B)$(A)$(!B)') # $(!B) is duplicated |
- except RuntimeError, ex: |
- return |
- raise AssertionError('Expected error') |
- |
- def testTemplate1(self): |
- e = emitter.Emitter() |
- e.Emit('-$A+$B-$A+$B-', A='1', B='2') |
- self.check(e, '-1+2-1+2-') |
- |
- def testTemplate2(self): |
- e = emitter.Emitter() |
- r = e.Emit('1$(A)2$(B)3$(A)4$(B)5', A='x', B='y') |
- self.assertEquals(None, r) |
- self.check(e, '1x2y3x4y5') |
- |
- def testTemplate3(self): |
- e = emitter.Emitter() |
- b = e.Emit('1$(A)2$(!B)3$(A)4$(B)5', A='x') |
- b.Emit('y') |
- self.check(e, '1x2y3x4y5') |
- self.check(b, 'y') |
- |
- def testTemplate4(self): |
- e = emitter.Emitter() |
- (a, b) = e.Emit('$!A$!B$A$B') # pair of holes. |
- a.Emit('x') |
- b.Emit('y') |
- self.check(e, 'xyxy') |
- |
- def testMissing(self): |
- # Behaviour of Undefined parameters depends on form. |
- e = emitter.Emitter(); |
- e.Emit('$A $?B $(C) $(?D)') |
- self.check(e, '$A $(C) ') |
- |
- def testHoleScopes(self): |
- e = emitter.Emitter() |
- # Holes have scope. They remember the bindings of the template application |
- # in which they are created. Create two holes which inherit bindings for C |
- # and D. |
- (a, b) = e.Emit('[$!A][$!B]$C$D$E', C='1', D='2') |
- e.Emit(' $A$B$C$D') # Bindings are local to the Emit |
- self.check(e, '[][]12$E $A$B$C$D') |
- |
- # Holes are not bound within holes. That would too easily lead to infinite |
- # expansions. |
- a.Emit('$A$C$D') # $A12 |
- b.Emit('$D$C$B') # 21$B |
- self.check(e, '[$A12][21$B]12$E $A$B$C$D') |
- # EmitRaw avoids interpolation. |
- a.EmitRaw('$C$D') |
- b.EmitRaw('$D$C') |
- self.check(e, '[$A12$C$D][21$B$D$C]12$E $A$B$C$D') |
- |
- def testFormat(self): |
- self.assertEquals(emitter.Format('$A$B', A=1, B=2), '12') |
- |
-if __name__ == '__main__': |
- logging.config.fileConfig('logging.conf') |
- if __name__ == '__main__': |
- unittest.main() |