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