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

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

Issue 2082173002: New go generator shakedown. (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
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 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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698