summaryrefslogtreecommitdiff
path: root/chromium/tools/json_schema_compiler/code_test.py
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
commit679147eead574d186ebf3069647b4c23e8ccace6 (patch)
treefc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/tools/json_schema_compiler/code_test.py
downloadqtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz
Initial import.
Diffstat (limited to 'chromium/tools/json_schema_compiler/code_test.py')
-rwxr-xr-xchromium/tools/json_schema_compiler/code_test.py165
1 files changed, 165 insertions, 0 deletions
diff --git a/chromium/tools/json_schema_compiler/code_test.py b/chromium/tools/json_schema_compiler/code_test.py
new file mode 100755
index 00000000000..ca3652420f9
--- /dev/null
+++ b/chromium/tools/json_schema_compiler/code_test.py
@@ -0,0 +1,165 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 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.
+
+from code import Code
+import unittest
+
+class CodeTest(unittest.TestCase):
+ def testAppend(self):
+ c = Code()
+ c.Append('line')
+ self.assertEquals('line', c.Render())
+
+ def testBlock(self):
+ c = Code()
+ (c.Append('line')
+ .Sblock('sblock')
+ .Append('inner')
+ .Append('moreinner')
+ .Sblock('moresblock')
+ .Append('inner')
+ .Eblock('out')
+ .Append('inner')
+ .Eblock('out')
+ )
+ self.assertEquals(
+ 'line\n'
+ 'sblock\n'
+ ' inner\n'
+ ' moreinner\n'
+ ' moresblock\n'
+ ' inner\n'
+ ' out\n'
+ ' inner\n'
+ 'out',
+ c.Render())
+
+ def testConcat(self):
+ b = Code()
+ (b.Sblock('2')
+ .Append('2')
+ .Eblock('2')
+ )
+ c = Code()
+ (c.Sblock('1')
+ .Concat(b)
+ .Append('1')
+ .Eblock('1')
+ )
+ self.assertEquals(
+ '1\n'
+ ' 2\n'
+ ' 2\n'
+ ' 2\n'
+ ' 1\n'
+ '1',
+ c.Render())
+ d = Code()
+ a = Code()
+ a.Concat(d)
+ self.assertEquals('', a.Render())
+ a.Concat(c)
+ self.assertEquals(
+ '1\n'
+ ' 2\n'
+ ' 2\n'
+ ' 2\n'
+ ' 1\n'
+ '1',
+ a.Render())
+
+ def testConcatErrors(self):
+ c = Code()
+ d = Code()
+ d.Append('%s')
+ self.assertRaises(TypeError, c.Concat, d)
+ d = Code()
+ d.Append('%(classname)s')
+ self.assertRaises(TypeError, c.Concat, d)
+ d = 'line of code'
+ self.assertRaises(TypeError, c.Concat, d)
+
+ def testSubstitute(self):
+ c = Code()
+ c.Append('%(var1)s %(var2)s %(var1)s')
+ c.Substitute({'var1': 'one', 'var2': 'two'})
+ self.assertEquals('one two one', c.Render())
+ c.Append('%(var1)s %(var2)s %(var3)s')
+ c.Append('%(var2)s %(var1)s %(var3)s')
+ c.Substitute({'var1': 'one', 'var2': 'two', 'var3': 'three'})
+ self.assertEquals(
+ 'one two one\n'
+ 'one two three\n'
+ 'two one three',
+ c.Render())
+
+ def testSubstituteErrors(self):
+ # No unnamed placeholders allowed when substitute is run
+ c = Code()
+ c.Append('%s %s')
+ self.assertRaises(TypeError, c.Substitute, ('var1', 'one'))
+ c = Code()
+ c.Append('%s %(var1)s')
+ self.assertRaises(TypeError, c.Substitute, {'var1': 'one'})
+ c = Code()
+ c.Append('%s %(var1)s')
+ self.assertRaises(TypeError, c.Substitute, {'var1': 'one'})
+ c = Code()
+ c.Append('%(var1)s')
+ self.assertRaises(KeyError, c.Substitute, {'clearlynotvar1': 'one'})
+
+ def testIsEmpty(self):
+ c = Code()
+ self.assertTrue(c.IsEmpty())
+ c.Append('asdf')
+ self.assertFalse(c.IsEmpty())
+
+ def testComment(self):
+ long_comment = ('This comment is eighty nine characters in longness, '
+ 'that is, to use another word, length')
+ c = Code()
+ c.Comment(long_comment)
+ self.assertEquals(
+ '// This comment is eighty nine characters '
+ 'in longness, that is, to use another\n'
+ '// word, length',
+ c.Render())
+ c = Code()
+ c.Sblock('sblock')
+ c.Comment(long_comment)
+ c.Eblock('eblock')
+ c.Comment(long_comment)
+ self.assertEquals(
+ 'sblock\n'
+ ' // This comment is eighty nine characters '
+ 'in longness, that is, to use\n'
+ ' // another word, length\n'
+ 'eblock\n'
+ '// This comment is eighty nine characters in '
+ 'longness, that is, to use another\n'
+ '// word, length',
+ c.Render())
+ long_word = 'x' * 100
+ c = Code()
+ c.Comment(long_word)
+ self.assertEquals(
+ '// ' + 'x' * 77 + '\n'
+ '// ' + 'x' * 23,
+ c.Render())
+
+ def testCommentWithSpecialCharacters(self):
+ c = Code()
+ c.Comment('20% of 80%s')
+ c.Substitute({})
+ self.assertEquals('// 20% of 80%s', c.Render())
+ d = Code()
+ d.Append('90')
+ d.Concat(c)
+ self.assertEquals('90\n'
+ '// 20% of 80%s',
+ d.Render())
+
+if __name__ == '__main__':
+ unittest.main()