1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
| package main
|
| import (
| "bytes"
| "strings"
| "testing"
|
| pb "github.com/google/protobuf/examples/tutorial"
| )
|
| func TestWritePersonWritesPerson(t *testing.T) {
| buf := new(bytes.Buffer)
| // [START populate_proto]
| p := pb.Person{
| Id: 1234,
| Name: "John Doe",
| Email: "jdoe@example.com",
| Phones: []*pb.Person_PhoneNumber{
| {Number: "555-4321", Type: pb.Person_HOME},
| },
| }
| // [END populate_proto]
| writePerson(buf, &p)
| got := buf.String()
| want := `Person ID: 1234
| Name: John Doe
| E-mail address: jdoe@example.com
| Home phone #: 555-4321
| `
| if got != want {
| t.Errorf("writePerson(%s) =>\n\t%q, want %q", p.String(), got, want)
| }
| }
|
| func TestListPeopleWritesList(t *testing.T) {
| buf := new(bytes.Buffer)
| in := pb.AddressBook{[]*pb.Person{
| {
| Name: "John Doe",
| Id: 101,
| Email: "john@example.com",
| },
| {
| Name: "Jane Doe",
| Id: 102,
| },
| {
| Name: "Jack Doe",
| Id: 201,
| Email: "jack@example.com",
| Phones: []*pb.Person_PhoneNumber{
| {Number: "555-555-5555", Type: pb.Person_WORK},
| },
| },
| {
| Name: "Jack Buck",
| Id: 301,
| Email: "buck@example.com",
| Phones: []*pb.Person_PhoneNumber{
| {Number: "555-555-0000", Type: pb.Person_HOME},
| {Number: "555-555-0001", Type: pb.Person_MOBILE},
| {Number: "555-555-0002", Type: pb.Person_WORK},
| },
| },
| {
| Name: "Janet Doe",
| Id: 1001,
| Email: "janet@example.com",
| Phones: []*pb.Person_PhoneNumber{
| {Number: "555-777-0000"},
| {Number: "555-777-0001", Type: pb.Person_HOME},
| },
| },
| }}
| listPeople(buf, &in)
| want := strings.Split(`Person ID: 101
| Name: John Doe
| E-mail address: john@example.com
| Person ID: 102
| Name: Jane Doe
| Person ID: 201
| Name: Jack Doe
| E-mail address: jack@example.com
| Work phone #: 555-555-5555
| Person ID: 301
| Name: Jack Buck
| E-mail address: buck@example.com
| Home phone #: 555-555-0000
| Mobile phone #: 555-555-0001
| Work phone #: 555-555-0002
| Person ID: 1001
| Name: Janet Doe
| E-mail address: janet@example.com
| Mobile phone #: 555-777-0000
| Home phone #: 555-777-0001
| `, "\n")
| got := strings.Split(buf.String(), "\n")
| if len(got) != len(want) {
| t.Errorf(
| "listPeople(%s) =>\n\t%q has %d lines, want %d",
| in.String(),
| buf.String(),
| len(got),
| len(want))
| }
| lines := len(got)
| if lines > len(want) {
| lines = len(want)
| }
| for i := 0; i < lines; i++ {
| if got[i] != want[i] {
| t.Errorf(
| "listPeople(%s) =>\n\tline %d %q, want %q",
| in.String(),
| i,
| got[i],
| want[i])
| }
| }
| }
|
|