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 templates | 5 package templates |
6 | 6 |
7 import ( | 7 import ( |
8 "testing" | 8 "testing" |
9 | 9 |
10 "mojom/generators/go/translator" | 10 "mojom/generators/go/translator" |
11 ) | 11 ) |
12 | 12 |
13 type mockEncodingInfo struct { | 13 type mockEncodingInfo struct { |
14 translator.EncodingInfo | 14 translator.EncodingInfo |
15 isSimple bool | 15 isSimple bool |
16 isPointer bool | 16 isPointer bool |
17 isHandle bool | 17 isHandle bool |
18 isArray bool | 18 isArray bool |
19 isMap bool | 19 isMap bool |
20 isNullable bool | 20 isNullable bool |
21 isStruct bool | 21 isStruct bool |
22 isUnion bool | 22 isUnion bool |
23 isEnum bool | 23 isEnum bool |
| 24 isInterface bool |
| 25 isInterfaceRequest bool |
24 elementEncodingInfo *mockEncodingInfo | 26 elementEncodingInfo *mockEncodingInfo |
25 keyEncodingInfo *mockEncodingInfo | 27 keyEncodingInfo *mockEncodingInfo |
26 valueEncodingInfo *mockEncodingInfo | 28 valueEncodingInfo *mockEncodingInfo |
27 bitSize uint32 | 29 bitSize uint32 |
28 writeFunction string | 30 writeFunction string |
29 readFunction string | 31 readFunction string |
30 identifier string | 32 identifier string |
31 goType string | 33 goType string |
32 } | 34 } |
33 | 35 |
34 func (m mockEncodingInfo) IsSimple() bool { return
m.isSimple } | 36 func (m mockEncodingInfo) IsSimple() bool { return
m.isSimple } |
35 func (m mockEncodingInfo) IsPointer() bool { return
m.isPointer } | 37 func (m mockEncodingInfo) IsPointer() bool { return
m.isPointer } |
36 func (m mockEncodingInfo) IsHandle() bool { return
m.isHandle } | 38 func (m mockEncodingInfo) IsHandle() bool { return
m.isHandle } |
37 func (m mockEncodingInfo) IsArray() bool { return
m.isArray } | 39 func (m mockEncodingInfo) IsArray() bool { return
m.isArray } |
38 func (m mockEncodingInfo) IsMap() bool { return
m.isMap } | 40 func (m mockEncodingInfo) IsMap() bool { return
m.isMap } |
39 func (m mockEncodingInfo) IsNullable() bool { return
m.isNullable } | 41 func (m mockEncodingInfo) IsNullable() bool { return
m.isNullable } |
40 func (m mockEncodingInfo) IsStruct() bool { return
m.isStruct } | 42 func (m mockEncodingInfo) IsStruct() bool { return
m.isStruct } |
41 func (m mockEncodingInfo) IsUnion() bool { return
m.isUnion } | 43 func (m mockEncodingInfo) IsUnion() bool { return
m.isUnion } |
42 func (m mockEncodingInfo) IsEnum() bool { return
m.isEnum } | 44 func (m mockEncodingInfo) IsEnum() bool { return
m.isEnum } |
| 45 func (m mockEncodingInfo) IsInterface() bool { return
m.isInterface } |
| 46 func (m mockEncodingInfo) IsInterfaceRequest() bool { return
m.isInterfaceRequest } |
43 func (m mockEncodingInfo) ElementEncodingInfo() translator.EncodingInfo { return
m.elementEncodingInfo } | 47 func (m mockEncodingInfo) ElementEncodingInfo() translator.EncodingInfo { return
m.elementEncodingInfo } |
44 func (m mockEncodingInfo) KeyEncodingInfo() translator.EncodingInfo { return
m.keyEncodingInfo } | 48 func (m mockEncodingInfo) KeyEncodingInfo() translator.EncodingInfo { return
m.keyEncodingInfo } |
45 func (m mockEncodingInfo) ValueEncodingInfo() translator.EncodingInfo { return
m.valueEncodingInfo } | 49 func (m mockEncodingInfo) ValueEncodingInfo() translator.EncodingInfo { return
m.valueEncodingInfo } |
46 func (m mockEncodingInfo) BitSize() uint32 { return
m.bitSize } | 50 func (m mockEncodingInfo) BitSize() uint32 { return
m.bitSize } |
47 func (m mockEncodingInfo) WriteFunction() string { return
m.writeFunction } | 51 func (m mockEncodingInfo) WriteFunction() string { return
m.writeFunction } |
48 func (m mockEncodingInfo) ReadFunction() string { return
m.readFunction } | 52 func (m mockEncodingInfo) ReadFunction() string { return
m.readFunction } |
49 func (m mockEncodingInfo) Identifier() string { return
m.identifier } | 53 func (m mockEncodingInfo) Identifier() string { return
m.identifier } |
50 func (m mockEncodingInfo) GoType() string { return
m.goType } | 54 func (m mockEncodingInfo) GoType() string { return
m.goType } |
51 | 55 |
52 func TestEncodingSimpleFieldEncoding(t *testing.T) { | 56 func TestEncodingSimpleFieldEncoding(t *testing.T) { |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 return err | 388 return err |
385 }` | 389 }` |
386 | 390 |
387 encodingInfo := mockEncodingInfo{ | 391 encodingInfo := mockEncodingInfo{ |
388 isEnum: true, | 392 isEnum: true, |
389 identifier: "s.EnumField", | 393 identifier: "s.EnumField", |
390 } | 394 } |
391 | 395 |
392 check(t, expected, "FieldEncodingTmpl", encodingInfo) | 396 check(t, expected, "FieldEncodingTmpl", encodingInfo) |
393 } | 397 } |
| 398 |
| 399 func TestEncodingInterfaceFieldEncoding(t *testing.T) { |
| 400 expected := `if err := encoder.WriteInterface(s.IntField.PassMessagePipe
()); err != nil { |
| 401 return err |
| 402 }` |
| 403 |
| 404 encodingInfo := mockEncodingInfo{ |
| 405 isInterface: true, |
| 406 identifier: "s.IntField", |
| 407 writeFunction: "WriteInterface", |
| 408 } |
| 409 |
| 410 check(t, expected, "FieldEncodingTmpl", encodingInfo) |
| 411 } |
| 412 |
| 413 func TestEncodingNullableInterfaceFieldEncoding(t *testing.T) { |
| 414 expected := `if s.IntField == nil { |
| 415 encoder.WriteInvalidInterface() |
| 416 } else { |
| 417 if err := encoder.WriteInterface(s.IntField.PassMessagePipe()); err != n
il { |
| 418 return err |
| 419 } |
| 420 }` |
| 421 |
| 422 encodingInfo := mockEncodingInfo{ |
| 423 isInterface: true, |
| 424 isNullable: true, |
| 425 identifier: "s.IntField", |
| 426 writeFunction: "WriteInterface", |
| 427 } |
| 428 |
| 429 check(t, expected, "FieldEncodingTmpl", encodingInfo) |
| 430 } |
| 431 |
| 432 func TestEncodingInterfaceRequestFieldEncoding(t *testing.T) { |
| 433 expected := `if err := encoder.WriteHandle(s.IntField.PassMessagePipe())
; err != nil { |
| 434 return err |
| 435 }` |
| 436 |
| 437 encodingInfo := mockEncodingInfo{ |
| 438 isInterface: true, |
| 439 isInterfaceRequest: true, |
| 440 identifier: "s.IntField", |
| 441 writeFunction: "WriteHandle", |
| 442 } |
| 443 |
| 444 check(t, expected, "FieldEncodingTmpl", encodingInfo) |
| 445 } |
| 446 |
| 447 func TestEncodingNullableInterfaceRequestFieldEncoding(t *testing.T) { |
| 448 expected := `if s.IntField == nil { |
| 449 encoder.WriteInvalidHandle() |
| 450 } else { |
| 451 if err := encoder.WriteHandle(s.IntField.PassMessagePipe()); err != nil
{ |
| 452 return err |
| 453 } |
| 454 }` |
| 455 |
| 456 encodingInfo := mockEncodingInfo{ |
| 457 isInterface: true, |
| 458 isInterfaceRequest: true, |
| 459 isNullable: true, |
| 460 identifier: "s.IntField", |
| 461 writeFunction: "WriteHandle", |
| 462 } |
| 463 |
| 464 check(t, expected, "FieldEncodingTmpl", encodingInfo) |
| 465 } |
OLD | NEW |