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

Side by Side Diff: mojom/generators/go/templates/encoding_test.go

Issue 2045063002: [New go generator] Implement declaring unions. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « mojom/generators/go/templates/encoding.go ('k') | mojom/generators/go/templates/structs.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package templates 5 package templates
6 6
7 import ( 7 import (
8 "testing" 8 "testing"
9
10 "mojom/generators/go/translator"
9 ) 11 )
10 12
11 type mockEncodingInfo struct { 13 type mockEncodingInfo struct {
12 » IsSimple bool 14 » translator.EncodingInfo
13 » IsPointer bool 15 » isSimple bool
14 » IsHandle bool 16 » isPointer bool
15 » IsArray bool 17 » isHandle bool
16 » IsMap bool 18 » isArray bool
17 » IsNullable bool 19 » isMap bool
18 » IsStruct bool 20 » isNullable bool
19 » ElementEncodingInfo *mockEncodingInfo 21 » isStruct bool
20 » KeyEncodingInfo *mockEncodingInfo 22 » elementEncodingInfo *mockEncodingInfo
21 » ValueEncodingInfo *mockEncodingInfo 23 » keyEncodingInfo *mockEncodingInfo
22 » BitSize uint32 24 » valueEncodingInfo *mockEncodingInfo
23 » WriteFunction string 25 » bitSize uint32
24 » ReadFunction string 26 » writeFunction string
25 » Identifier string 27 » readFunction string
26 » GoType string 28 » identifier string
29 » goType string
27 } 30 }
28 31
32 func (m mockEncodingInfo) IsSimple() bool { return m.isSimple }
33 func (m mockEncodingInfo) IsPointer() bool { return m.isPointer }
34 func (m mockEncodingInfo) IsHandle() bool { return m.isHandle }
35 func (m mockEncodingInfo) IsArray() bool { return m.isArray }
36 func (m mockEncodingInfo) IsMap() bool { return m.isMap }
37 func (m mockEncodingInfo) IsNullable() bool { return m.isNullable }
38 func (m mockEncodingInfo) IsStruct() bool { return m.isStruct }
39 func (m mockEncodingInfo) ElementEncodingInfo() translator.EncodingInfo { return m.elementEncodingInfo }
40 func (m mockEncodingInfo) KeyEncodingInfo() translator.EncodingInfo { return m.keyEncodingInfo }
41 func (m mockEncodingInfo) ValueEncodingInfo() translator.EncodingInfo { return m.valueEncodingInfo }
42 func (m mockEncodingInfo) BitSize() uint32 { return m.bitSize }
43 func (m mockEncodingInfo) WriteFunction() string { return m.writeFunction }
44 func (m mockEncodingInfo) ReadFunction() string { return m.readFunction }
45 func (m mockEncodingInfo) Identifier() string { return m.identifier }
46 func (m mockEncodingInfo) GoType() string { return m.goType }
47
29 func TestEncodingSimpleFieldEncoding(t *testing.T) { 48 func TestEncodingSimpleFieldEncoding(t *testing.T) {
30 expected := `if err := encoder.WriteUint8(s.Fuint8); err != nil { 49 expected := `if err := encoder.WriteUint8(s.Fuint8); err != nil {
31 return err 50 return err
32 }` 51 }`
33 52
34 encodingInfo := mockEncodingInfo{ 53 encodingInfo := mockEncodingInfo{
35 » » IsSimple: true, 54 » » isSimple: true,
36 » » Identifier: "s.Fuint8", 55 » » identifier: "s.Fuint8",
37 » » WriteFunction: "WriteUint8", 56 » » writeFunction: "WriteUint8",
38 } 57 }
39 58
40 check(t, expected, "FieldEncodingTmpl", encodingInfo) 59 check(t, expected, "FieldEncodingTmpl", encodingInfo)
41 } 60 }
42 61
43 func TestEncodingHandleFieldEncoding(t *testing.T) { 62 func TestEncodingHandleFieldEncoding(t *testing.T) {
44 expected := `if err := encoder.WriteHandle(s.SomeHandle); err != nil { 63 expected := `if err := encoder.WriteHandle(s.SomeHandle); err != nil {
45 return err 64 return err
46 }` 65 }`
47 66
48 encodingInfo := mockEncodingInfo{ 67 encodingInfo := mockEncodingInfo{
49 » » IsHandle: true, 68 » » isHandle: true,
50 » » Identifier: "s.SomeHandle", 69 » » identifier: "s.SomeHandle",
51 } 70 }
52 71
53 check(t, expected, "FieldEncodingTmpl", encodingInfo) 72 check(t, expected, "FieldEncodingTmpl", encodingInfo)
54 } 73 }
55 74
56 func TestEncodingNullableHandleFieldEncoding(t *testing.T) { 75 func TestEncodingNullableHandleFieldEncoding(t *testing.T) {
57 expected := `if s.SomeHandle == nil { 76 expected := `if s.SomeHandle == nil {
58 encoder.WriteInvalidHandle() 77 encoder.WriteInvalidHandle()
59 } else { 78 } else {
60 if err := encoder.WriteHandle(*(s.SomeHandle)); err != nil { 79 if err := encoder.WriteHandle(*(s.SomeHandle)); err != nil {
61 return err 80 return err
62 } 81 }
63 }` 82 }`
64 83
65 encodingInfo := mockEncodingInfo{ 84 encodingInfo := mockEncodingInfo{
66 » » IsHandle: true, 85 » » isHandle: true,
67 » » Identifier: "s.SomeHandle", 86 » » identifier: "s.SomeHandle",
68 » » IsNullable: true, 87 » » isNullable: true,
69 } 88 }
70 89
71 check(t, expected, "FieldEncodingTmpl", encodingInfo) 90 check(t, expected, "FieldEncodingTmpl", encodingInfo)
72 } 91 }
73 92
74 func TestEncodingStringFieldEncoding(t *testing.T) { 93 func TestEncodingStringFieldEncoding(t *testing.T) {
75 expected := `if err := encoder.WritePointer(); err != nil { 94 expected := `if err := encoder.WritePointer(); err != nil {
76 return err 95 return err
77 } 96 }
78 if err := encoder.WriteString(s.FString); err != nil { 97 if err := encoder.WriteString(s.FString); err != nil {
79 return err 98 return err
80 }` 99 }`
81 100
82 encodingInfo := mockEncodingInfo{ 101 encodingInfo := mockEncodingInfo{
83 » » IsSimple: true, 102 » » isSimple: true,
84 » » Identifier: "s.FString", 103 » » identifier: "s.FString",
85 » » WriteFunction: "WriteString", 104 » » writeFunction: "WriteString",
86 » » IsPointer: true, 105 » » isPointer: true,
87 } 106 }
88 107
89 check(t, expected, "FieldEncodingTmpl", encodingInfo) 108 check(t, expected, "FieldEncodingTmpl", encodingInfo)
90 } 109 }
91 110
92 func TestEncodingNullableStringFieldEncoding(t *testing.T) { 111 func TestEncodingNullableStringFieldEncoding(t *testing.T) {
93 expected := `if s.FString == nil { 112 expected := `if s.FString == nil {
94 encoder.WriteNullPointer() 113 encoder.WriteNullPointer()
95 } else { 114 } else {
96 if err := encoder.WritePointer(); err != nil { 115 if err := encoder.WritePointer(); err != nil {
97 return err 116 return err
98 } 117 }
99 if err := encoder.WriteString(s.FString); err != nil { 118 if err := encoder.WriteString(s.FString); err != nil {
100 return err 119 return err
101 } 120 }
102 }` 121 }`
103 122
104 encodingInfo := mockEncodingInfo{ 123 encodingInfo := mockEncodingInfo{
105 » » IsSimple: true, 124 » » isSimple: true,
106 » » Identifier: "s.FString", 125 » » identifier: "s.FString",
107 » » WriteFunction: "WriteString", 126 » » writeFunction: "WriteString",
108 » » IsPointer: true, 127 » » isPointer: true,
109 » » IsNullable: true, 128 » » isNullable: true,
110 } 129 }
111 130
112 check(t, expected, "FieldEncodingTmpl", encodingInfo) 131 check(t, expected, "FieldEncodingTmpl", encodingInfo)
113 } 132 }
114 133
115 func TestEncodingArrayOfArrayOfUint16(t *testing.T) { 134 func TestEncodingArrayOfArrayOfUint16(t *testing.T) {
116 expected := `if err := encoder.WritePointer(); err != nil { 135 expected := `if err := encoder.WritePointer(); err != nil {
117 return err 136 return err
118 } 137 }
119 encoder.StartArray(uint32(len(s.ArrayOfArrayOfInt)), 64) 138 encoder.StartArray(uint32(len(s.ArrayOfArrayOfInt)), 64)
120 for _, elem0 := range s.ArrayOfArrayOfInt { 139 for _, elem0 := range s.ArrayOfArrayOfInt {
121 if err := encoder.WritePointer(); err != nil { 140 if err := encoder.WritePointer(); err != nil {
122 return err 141 return err
123 } 142 }
124 encoder.StartArray(uint32(len(elem0)), 16) 143 encoder.StartArray(uint32(len(elem0)), 16)
125 for _, elem1 := range elem0 { 144 for _, elem1 := range elem0 {
126 if err := encoder.WriteUint16(elem1); err != nil { 145 if err := encoder.WriteUint16(elem1); err != nil {
127 return err 146 return err
128 } 147 }
129 } 148 }
130 if err := encoder.Finish(); err != nil { 149 if err := encoder.Finish(); err != nil {
131 return err 150 return err
132 } 151 }
133 } 152 }
134 if err := encoder.Finish(); err != nil { 153 if err := encoder.Finish(); err != nil {
135 return err 154 return err
136 }` 155 }`
137 156
138 encodingInfo := mockEncodingInfo{ 157 encodingInfo := mockEncodingInfo{
139 » » IsPointer: true, 158 » » isPointer: true,
140 » » IsArray: true, 159 » » isArray: true,
141 » » Identifier: "s.ArrayOfArrayOfInt", 160 » » identifier: "s.ArrayOfArrayOfInt",
142 » » ElementEncodingInfo: &mockEncodingInfo{ 161 » » elementEncodingInfo: &mockEncodingInfo{
143 » » » IsPointer: true, 162 » » » isPointer: true,
144 » » » IsArray: true, 163 » » » isArray: true,
145 » » » BitSize: 64, 164 » » » bitSize: 64,
146 » » » Identifier: "elem0", 165 » » » identifier: "elem0",
147 » » » ElementEncodingInfo: &mockEncodingInfo{ 166 » » » elementEncodingInfo: &mockEncodingInfo{
148 » » » » IsSimple: true, 167 » » » » isSimple: true,
149 » » » » BitSize: 16, 168 » » » » bitSize: 16,
150 » » » » WriteFunction: "WriteUint16", 169 » » » » writeFunction: "WriteUint16",
151 » » » » Identifier: "elem1", 170 » » » » identifier: "elem1",
152 }, 171 },
153 }, 172 },
154 } 173 }
155 174
156 check(t, expected, "FieldEncodingTmpl", encodingInfo) 175 check(t, expected, "FieldEncodingTmpl", encodingInfo)
157 } 176 }
158 177
159 func TestEncodingMapUint16ToInt32(t *testing.T) { 178 func TestEncodingMapUint16ToInt32(t *testing.T) {
160 expected := `if err := encoder.WritePointer(); err != nil { 179 expected := `if err := encoder.WritePointer(); err != nil {
161 return err 180 return err
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 } 215 }
197 if err := encoder.Finish(); err != nil { 216 if err := encoder.Finish(); err != nil {
198 return err 217 return err
199 } 218 }
200 } 219 }
201 if err := encoder.Finish(); err != nil { 220 if err := encoder.Finish(); err != nil {
202 return err 221 return err
203 }` 222 }`
204 223
205 encodingInfo := mockEncodingInfo{ 224 encodingInfo := mockEncodingInfo{
206 » » IsPointer: true, 225 » » isPointer: true,
207 » » IsMap: true, 226 » » isMap: true,
208 » » Identifier: "s.MapUint16ToInt32", 227 » » identifier: "s.MapUint16ToInt32",
209 » » KeyEncodingInfo: &mockEncodingInfo{ 228 » » keyEncodingInfo: &mockEncodingInfo{
210 » » » IsPointer: true, 229 » » » isPointer: true,
211 » » » IsArray: true, 230 » » » isArray: true,
212 » » » BitSize: 64, 231 » » » bitSize: 64,
213 » » » Identifier: "keys0", 232 » » » identifier: "keys0",
214 » » » GoType: "[]uint16", 233 » » » goType: "[]uint16",
215 » » » ElementEncodingInfo: &mockEncodingInfo{ 234 » » » elementEncodingInfo: &mockEncodingInfo{
216 » » » » IsSimple: true, 235 » » » » isSimple: true,
217 » » » » BitSize: 16, 236 » » » » bitSize: 16,
218 » » » » WriteFunction: "WriteUint16", 237 » » » » writeFunction: "WriteUint16",
219 » » » » Identifier: "key0", 238 » » » » identifier: "key0",
220 }, 239 },
221 }, 240 },
222 » » ValueEncodingInfo: &mockEncodingInfo{ 241 » » valueEncodingInfo: &mockEncodingInfo{
223 » » » IsPointer: true, 242 » » » isPointer: true,
224 » » » IsArray: true, 243 » » » isArray: true,
225 » » » BitSize: 64, 244 » » » bitSize: 64,
226 » » » Identifier: "values0", 245 » » » identifier: "values0",
227 » » » GoType: "[]int32", 246 » » » goType: "[]int32",
228 » » » ElementEncodingInfo: &mockEncodingInfo{ 247 » » » elementEncodingInfo: &mockEncodingInfo{
229 » » » » IsSimple: true, 248 » » » » isSimple: true,
230 » » » » BitSize: 32, 249 » » » » bitSize: 32,
231 » » » » WriteFunction: "WriteInt32", 250 » » » » writeFunction: "WriteInt32",
232 » » » » Identifier: "value0", 251 » » » » identifier: "value0",
233 }, 252 },
234 }, 253 },
235 } 254 }
236 255
237 check(t, expected, "FieldEncodingTmpl", encodingInfo) 256 check(t, expected, "FieldEncodingTmpl", encodingInfo)
238 } 257 }
239 258
240 func TestEncodingStructFieldEncoding(t *testing.T) { 259 func TestEncodingStructFieldEncoding(t *testing.T) {
241 expected := `if err := encoder.WritePointer(); err != nil { 260 expected := `if err := encoder.WritePointer(); err != nil {
242 return err 261 return err
243 } 262 }
244 if err := s.FStruct.Encode(encoder); err != nil { 263 if err := s.FStruct.Encode(encoder); err != nil {
245 return err 264 return err
246 }` 265 }`
247 266
248 encodingInfo := mockEncodingInfo{ 267 encodingInfo := mockEncodingInfo{
249 » » IsPointer: true, 268 » » isPointer: true,
250 » » IsStruct: true, 269 » » isStruct: true,
251 » » Identifier: "s.FStruct", 270 » » identifier: "s.FStruct",
252 } 271 }
253 272
254 check(t, expected, "FieldEncodingTmpl", encodingInfo) 273 check(t, expected, "FieldEncodingTmpl", encodingInfo)
255 } 274 }
256 275
257 func TestEncodingNullableStructFieldEncoding(t *testing.T) { 276 func TestEncodingNullableStructFieldEncoding(t *testing.T) {
258 expected := `if s.FNullableStruct == nil { 277 expected := `if s.FNullableStruct == nil {
259 encoder.WriteNullPointer() 278 encoder.WriteNullPointer()
260 } else { 279 } else {
261 if err := encoder.WritePointer(); err != nil { 280 if err := encoder.WritePointer(); err != nil {
262 return err 281 return err
263 } 282 }
264 if err := s.FNullableStruct.Encode(encoder); err != nil { 283 if err := s.FNullableStruct.Encode(encoder); err != nil {
265 return err 284 return err
266 } 285 }
267 }` 286 }`
268 287
269 encodingInfo := mockEncodingInfo{ 288 encodingInfo := mockEncodingInfo{
270 » » IsPointer: true, 289 » » isPointer: true,
271 » » IsStruct: true, 290 » » isStruct: true,
272 » » IsNullable: true, 291 » » isNullable: true,
273 » » Identifier: "s.FNullableStruct", 292 » » identifier: "s.FNullableStruct",
274 } 293 }
275 294
276 check(t, expected, "FieldEncodingTmpl", encodingInfo) 295 check(t, expected, "FieldEncodingTmpl", encodingInfo)
277 } 296 }
OLDNEW
« no previous file with comments | « mojom/generators/go/templates/encoding.go ('k') | mojom/generators/go/templates/structs.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698