Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Side by Side Diff: tools/json_schema_compiler/code_test.py

Issue 9114036: Code generation for extensions api (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: some rework Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import unittest
6 import model
7 import code
8 import json
9
10 class TestCppName(unittest.TestCase):
11 def test_cpp_name(self):
12 self.assertEquals(code.cpp_name('permissions'), 'Permissions')
13 self.assertEquals(code.cpp_name('updateAllTheThings'), 'UpdateAllTheThings')
14 self.assertEquals(code.cpp_name('aa.bb.cc'), 'Aa_Bb_Cc')
15
16 class TestCode(unittest.TestCase):
17 def test_append(self):
18 c = code.Code()
19 c.append('line')
20 self.assertEquals(c.render(), 'line')
21
22 def test_block(self):
23 c = code.Code()
24 c.append('line')
25 c.sblock('sblock')
26 c.append('inner')
27 c.append('moreinner')
28 c.sblock('moresblock')
29 c.append('inner')
30 c.eblock('out')
31 c.append('inner')
32 c.eblock('out')
33 self.assertEquals(c.render(),
34 'line\n'
35 'sblock\n'
36 ' inner\n'
37 ' moreinner\n'
38 ' moresblock\n'
39 ' inner\n'
40 ' out\n'
41 ' inner\n'
42 'out')
43
44 def test_add(self):
45 b = code.Code()
46 b.sblock('2')
47 b.append('2')
48 b.eblock('2')
49 c = code.Code()
50 c.sblock('1')
51 c.add(b)
52 c.append('1')
53 c.eblock('1')
54 self.assertEquals(c.render(),
55 '1\n'
56 ' 2\n'
57 ' 2\n'
58 ' 2\n'
59 ' 1\n'
60 '1')
61 d = code.Code()
62 a = code.Code()
63 a.add(d)
64 self.assertEquals(a.render(), '')
65 a.add(c)
66 self.assertEquals(a.render(),
67 '1\n'
68 ' 2\n'
69 ' 2\n'
70 ' 2\n'
71 ' 1\n'
72 '1')
73
74 def test_add_errors(self):
75 c = code.Code()
76 d = code.Code()
77 d.append('%s')
78 self.assertRaises(TypeError, c.add, d)
79 d = code.Code()
80 d.append('%(classname)s')
81 self.assertRaises(TypeError, c.add, d)
82 d = 'line of code'
83 self.assertRaises(TypeError, c.add, d)
84
85 def test_substitute(self):
86 c = code.Code()
87 c.append('%(var1)s %(var2)s %(var1)s')
88 c.substitute({'var1': 'one', 'var2': 'two'})
89 self.assertEquals(c.render(), 'one two one')
90 c.append('%(var1)s %(var2)s %(var3)s')
91 c.append('%(var1)s %(var2)s %(var3)s')
92 c.substitute({'var1': 'one', 'var2': 'two', 'var3': 'three'})
93 self.assertEquals(c.render(),
94 'one two one\n'
95 'one two three\n'
96 'one two three')
97
98 def test_substitute_errors(self):
99 # No unnamed placeholders allowed when substitute is run
100 c = code.Code()
101 c.append('%s %s')
102 self.assertRaises(TypeError, c.substitute, ('var1', 'one'))
103 c = code.Code()
104 c.append('%s %(var1)s')
105 self.assertRaises(TypeError, c.substitute, {'var1': 'one'})
106 c = code.Code()
107 c.append('%s %(var1)s')
108 self.assertRaises(TypeError, c.substitute, {'var1': 'one'})
109 c = code.Code()
110 c.append('%(var1)s')
111 self.assertRaises(KeyError, c.substitute, {'clearlynotvar1': 'one'})
112
113 def test_comment(self):
114 long_comment = ('This comment is eighty nine characters in longness, '
115 'that is, to use another word, length')
116 c = code.Code()
117 c.comment(long_comment)
118 self.assertEquals(c.render(),
119 '// This comment is eighty nine characters in longness, that is, to use another\n'
120 '// word, length')
121 c = code.Code()
122 c.sblock('sblock')
123 c.comment(long_comment)
124 c.eblock('eblock')
125 c.comment(long_comment)
126 self.assertEquals(c.render(),
127 'sblock\n'
128 ' // This comment is eighty nine characters in longness, that is, to us e\n'
129 ' // another word, length\n'
130 'eblock\n'
131 '// This comment is eighty nine characters in longness, that is, to use another\n'
132 '// word, length')
133 long_word = 'x' * 100
134 c = code.Code()
135 c.comment(long_word)
136 self.assertEquals(c.render(),
137 '// ' + 'x' * 77 + '\n'
138 '// ' + 'x' * 23)
139
140 if __name__ == '__main__':
141 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698