Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
1.9 KiB
96 lines
1.9 KiB
package main |
|
|
|
import ( |
|
"bytes" |
|
"strings" |
|
"testing" |
|
|
|
pb "github.com/google/protobuf/examples/tutorial" |
|
) |
|
|
|
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]) |
|
} |
|
} |
|
}
|
|
|