OLD | NEW |
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 translator | 5 package translator |
6 | 6 |
7 import ( | 7 import ( |
8 "sort" | 8 "sort" |
9 "testing" | 9 "testing" |
10 | 10 |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 translator := NewTranslator(&fileGraph) | 206 translator := NewTranslator(&fileGraph) |
207 | 207 |
208 typeRef := &mojom_types.TypeTypeReference{mojom_types.TypeReference{Type
Key: &typeKey}} | 208 typeRef := &mojom_types.TypeTypeReference{mojom_types.TypeReference{Type
Key: &typeKey}} |
209 | 209 |
210 info := translator.encodingInfo(typeRef) | 210 info := translator.encodingInfo(typeRef) |
211 | 211 |
212 checkEq(t, true, info.IsPointer()) | 212 checkEq(t, true, info.IsPointer()) |
213 checkEq(t, "SomeStruct", info.GoType()) | 213 checkEq(t, "SomeStruct", info.GoType()) |
214 } | 214 } |
215 | 215 |
| 216 func TestUnionTypeEncodingInfo(t *testing.T) { |
| 217 fileGraph := mojom_files.MojomFileGraph{} |
| 218 shortName := "SomeUnion" |
| 219 typeKey := "typeKey" |
| 220 |
| 221 mojomUnion := mojom_types.MojomUnion{ |
| 222 DeclData: &mojom_types.DeclarationData{ShortName: &shortName}} |
| 223 fileGraph.ResolvedTypes = map[string]mojom_types.UserDefinedType{} |
| 224 fileGraph.ResolvedTypes[typeKey] = &mojom_types.UserDefinedTypeUnionType
{mojomUnion} |
| 225 translator := NewTranslator(&fileGraph) |
| 226 |
| 227 typeRef := &mojom_types.TypeTypeReference{mojom_types.TypeReference{Type
Key: &typeKey}} |
| 228 |
| 229 info := translator.encodingInfo(typeRef) |
| 230 |
| 231 checkEq(t, true, info.IsUnion()) |
| 232 checkEq(t, false, info.IsPointer()) |
| 233 checkEq(t, uint32(128), info.BitSize()) |
| 234 checkEq(t, "SomeUnion", info.GoType()) |
| 235 |
| 236 info.(*unionTypeEncodingInfo).nestedUnion = true |
| 237 checkEq(t, true, info.IsPointer()) |
| 238 checkEq(t, uint32(64), info.BitSize()) |
| 239 } |
| 240 |
216 func TestTranslateMojomUnion(t *testing.T) { | 241 func TestTranslateMojomUnion(t *testing.T) { |
217 field1Name := "f_uint32" | 242 field1Name := "f_uint32" |
218 field1 := mojom_types.UnionField{ | 243 field1 := mojom_types.UnionField{ |
219 DeclData: &mojom_types.DeclarationData{ShortName: &field1Name}, | 244 DeclData: &mojom_types.DeclarationData{ShortName: &field1Name}, |
220 Type: &mojom_types.TypeSimpleType{Value: mojom_types.SimpleT
ype_Uint32}, | 245 Type: &mojom_types.TypeSimpleType{Value: mojom_types.SimpleT
ype_Uint32}, |
221 Tag: 5} | 246 Tag: 5} |
222 | 247 |
223 field2Name := "f_uint16" | 248 field2Name := "f_uint16" |
224 field2 := mojom_types.UnionField{ | 249 field2 := mojom_types.UnionField{ |
225 DeclData: &mojom_types.DeclarationData{ShortName: &field2Name}, | 250 DeclData: &mojom_types.DeclarationData{ShortName: &field2Name}, |
(...skipping 19 matching lines...) Expand all Loading... |
245 checkEq(t, "Foo", m.Name) | 270 checkEq(t, "Foo", m.Name) |
246 checkEq(t, "FUint32", m.Fields[0].Name) | 271 checkEq(t, "FUint32", m.Fields[0].Name) |
247 checkEq(t, "uint32", m.Fields[0].Type) | 272 checkEq(t, "uint32", m.Fields[0].Type) |
248 checkEq(t, uint32(5), m.Fields[0].Tag) | 273 checkEq(t, uint32(5), m.Fields[0].Tag) |
249 checkEq(t, m, m.Fields[0].Union) | 274 checkEq(t, m, m.Fields[0].Union) |
250 checkEq(t, "FUint16", m.Fields[1].Name) | 275 checkEq(t, "FUint16", m.Fields[1].Name) |
251 checkEq(t, "uint16", m.Fields[1].Type) | 276 checkEq(t, "uint16", m.Fields[1].Type) |
252 checkEq(t, uint32(6), m.Fields[1].Tag) | 277 checkEq(t, uint32(6), m.Fields[1].Tag) |
253 checkEq(t, m, m.Fields[1].Union) | 278 checkEq(t, m, m.Fields[1].Union) |
254 } | 279 } |
OLD | NEW |