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

Side by Side Diff: tools/json_to_struct/element_generator_test.py

Issue 11293291: Revert 167793 - Moving prepopulated search engines to a JSON file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « tools/json_to_struct/element_generator.py ('k') | tools/json_to_struct/json_to_struct.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 from element_generator import GenerateFieldContent
7 from element_generator import GenerateElements
8 import unittest
9
10 class ElementGeneratorTest(unittest.TestCase):
11 def testGenerateIntFieldContent(self):
12 lines = [];
13 GenerateFieldContent({'type': 'int', 'default': 5}, None, lines)
14 self.assertEquals([' 5,'], lines)
15 lines = [];
16 GenerateFieldContent({'type': 'int', 'default': 5}, 12, lines)
17 self.assertEquals([' 12,'], lines)
18 lines = [];
19 GenerateFieldContent({'type': 'int'}, -3, lines)
20 self.assertEquals([' -3,'], lines)
21
22 def testGenerateStringFieldContent(self):
23 lines = [];
24 GenerateFieldContent({'type': 'string', 'default': 'foo_bar'}, None, lines)
25 self.assertEquals([' "foo_bar",'], lines)
26 lines = [];
27 GenerateFieldContent({'type': 'string', 'default': 'foo'}, 'bar\n', lines)
28 self.assertEquals([' "bar\\n",'], lines)
29 lines = [];
30 GenerateFieldContent({'type': 'string'}, None, lines)
31 self.assertEquals([' NULL,'], lines)
32 lines = [];
33 GenerateFieldContent({'type': 'string'}, 'foo', lines)
34 self.assertEquals([' "foo",'], lines)
35
36 def testGenerateString16FieldContent(self):
37 lines = [];
38 GenerateFieldContent({'type': 'string16', 'default': u'f\u00d8\u00d81a'},
39 None, lines)
40 self.assertEquals([' L"f\\x00d8" L"\\x00d8" L"1a",'], lines)
41 lines = [];
42 GenerateFieldContent({'type': 'string16', 'default': 'foo'}, u'b\uc3a5r',
43 lines)
44 self.assertEquals([' L"b\\xc3a5" L"r",'], lines)
45 lines = [];
46 GenerateFieldContent({'type': 'string16'}, None, lines)
47 self.assertEquals([' NULL,'], lines)
48 lines = [];
49 GenerateFieldContent({'type': 'string16'}, u'foo\\u1234', lines)
50 self.assertEquals([' L"foo\\\\u1234",'], lines)
51
52 def testGenerateEnumFieldContent(self):
53 lines = [];
54 GenerateFieldContent({'type': 'enum', 'default': 'RED'}, None, lines)
55 self.assertEquals([' RED,'], lines)
56 lines = [];
57 GenerateFieldContent({'type': 'enum', 'default': 'RED'}, 'BLACK', lines)
58 self.assertEquals([' BLACK,'], lines)
59 lines = [];
60 GenerateFieldContent({'type': 'enum'}, 'BLUE', lines)
61 self.assertEquals([' BLUE,'], lines)
62
63 def testGenerateArrayFieldContent(self):
64 lines = ['STRUCT BEGINS'];
65 GenerateFieldContent({'type': 'array', 'contents': {'type': 'int'}},
66 None, lines)
67 self.assertEquals(['STRUCT BEGINS', ' NULL,', ' 0,'], lines)
68 lines = ['STRUCT BEGINS'];
69 GenerateFieldContent({'field': 'my_array', 'type': 'array',
70 'contents': {'type': 'int'}}, [3, 4], lines)
71 self.assertEquals('const int array_my_array[] = {\n' +
72 ' 3,\n' +
73 ' 4,\n' +
74 '};\n' +
75 'STRUCT BEGINS\n' +
76 ' array_my_array,\n' +
77 ' 2,', '\n'.join(lines))
78
79 def testGenerateElements(self):
80 schema = [
81 {'field': 'f0', 'type': 'int', 'default': 1000, 'optional': True},
82 {'field': 'f1', 'type': 'string'},
83 {'field': 'f2', 'type': 'enum', 'ctype': 'QuasiBool', 'default': 'MAYBE',
84 'optional': True},
85 {'field': 'f3', 'type': 'array', 'contents': {'type': 'string16'},
86 'optional': True}
87 ]
88 description = {
89 'int_variables': {'a': -5, 'b': 5},
90 'elements': {
91 'elem0': {'f0': 5, 'f1': 'foo', 'f2': 'SURE'},
92 'elem1': {'f2': 'NOWAY', 'f0': -2, 'f1': 'bar'},
93 'elem2': {'f1': 'foo_bar', 'f3': [u'bar', u'foo']}
94 }
95 }
96
97 # Build the expected result stream based on the unpredicatble order the
98 # dictionary element are listed in.
99 int_variable_expected = {
100 'a': 'const int a = -5;\n',
101 'b': 'const int b = 5;\n',
102 }
103 elements_expected = {
104 'elem0': 'const MyType elem0 = {\n' +
105 ' 5,\n' +
106 ' "foo",\n' +
107 ' SURE,\n' +
108 ' NULL,\n' +
109 ' 0,\n'
110 '};\n',
111 'elem1': 'const MyType elem1 = {\n' +
112 ' -2,\n' +
113 ' "bar",\n' +
114 ' NOWAY,\n' +
115 ' NULL,\n' +
116 ' 0,\n'
117 '};\n',
118 'elem2': 'const wchar_t* const array_f3[] = {\n' +
119 ' L"bar",\n' +
120 ' L"foo",\n' +
121 '};\n' +
122 'const MyType elem2 = {\n' +
123 ' 1000,\n' +
124 ' "foo_bar",\n' +
125 ' MAYBE,\n' +
126 ' array_f3,\n' +
127 ' 2,\n'
128 '};\n'
129 }
130 expected = ''
131 for key, value in description['int_variables'].items():
132 expected += int_variable_expected[key]
133 expected += '\n'
134 elements = []
135 for key, value in description['elements'].items():
136 elements.append(elements_expected[key])
137 expected += '\n'.join(elements)
138
139 result = GenerateElements('MyType', schema, description)
140 self.assertEquals(expected, result)
141
142 def testGenerateElementsMissingMandatoryField(self):
143 schema = [
144 {'field': 'f0', 'type': 'int'},
145 {'field': 'f1', 'type': 'string'},
146 ]
147 description = {
148 'int_variables': {'a': -5, 'b': 5},
149 'elements': {
150 'elem0': {'f0': 5},
151 }
152 }
153
154 self.assertRaises(RuntimeError,
155 lambda: GenerateElements('MyType', schema, description))
156
157 if __name__ == '__main__':
158 unittest.main()
OLDNEW
« no previous file with comments | « tools/json_to_struct/element_generator.py ('k') | tools/json_to_struct/json_to_struct.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698