Index: third_party/protobuf/examples/list_people_test.go |
diff --git a/third_party/protobuf/examples/list_people_test.go b/third_party/protobuf/examples/list_people_test.go |
new file mode 100644 |
index 0000000000000000000000000000000000000000..87d6ad6ec671ce61b216f387d452e46c9c340eca |
--- /dev/null |
+++ b/third_party/protobuf/examples/list_people_test.go |
@@ -0,0 +1,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]) |
+ } |
+ } |
+} |