123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package main
- import (
- "bytes"
- "strings"
- "testing"
- pb "github.com/protocolbuffers/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{People: []*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])
- }
- }
- }
|