| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | package mainimport (	"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.comPerson ID: 102  Name: Jane DoePerson ID: 201  Name: Jack Doe  E-mail address: jack@example.com  Work phone #: 555-555-5555Person 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-0002Person 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])		}	}}
 |