| 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 |