Skip to content

Commit

Permalink
Merge pull request #1052 from tswast/master
Browse files Browse the repository at this point in the history
Add region tags to the Go protobuf examples.
  • Loading branch information
xfxyjwf committed Dec 17, 2015
2 parents afbc89a + 7df1d77 commit 9e1777f
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 22 deletions.
5 changes: 5 additions & 0 deletions examples/add_person.go
Expand Up @@ -105,7 +105,10 @@ func main() {
log.Fatalln("Error reading file:", err)
}
}

// [START marshal_proto]
book := &pb.AddressBook{}
// [START_EXCLUDE]
if err := proto.Unmarshal(in, book); err != nil {
log.Fatalln("Failed to parse address book:", err)
}
Expand All @@ -116,6 +119,7 @@ func main() {
log.Fatalln("Error with address:", err)
}
book.People = append(book.People, addr)
// [END_EXCLUDE]

// Write the new address book back to disk.
out, err := proto.Marshal(book)
Expand All @@ -125,4 +129,5 @@ func main() {
if err := ioutil.WriteFile(fname, out, 0644); err != nil {
log.Fatalln("Failed to write address book:", err)
}
// [END marshal_proto]
}
46 changes: 24 additions & 22 deletions examples/list_people.go
Expand Up @@ -11,25 +11,29 @@ import (
pb "github.com/google/protobuf/examples/tutorial"
)

func listPeople(w io.Writer, book *pb.AddressBook) {
for _, p := range book.People {
fmt.Fprintln(w, "Person ID:", p.Id)
fmt.Fprintln(w, " Name:", p.Name)
if p.Email != "" {
fmt.Fprintln(w, " E-mail address:", p.Email)
}
func writePerson(w io.Writer, p *pb.Person) {
fmt.Fprintln(w, "Person ID:", p.Id)
fmt.Fprintln(w, " Name:", p.Name)
if p.Email != "" {
fmt.Fprintln(w, " E-mail address:", p.Email)
}

for _, pn := range p.Phones {
switch pn.Type {
case pb.Person_MOBILE:
fmt.Fprint(w, " Mobile phone #: ")
case pb.Person_HOME:
fmt.Fprint(w, " Home phone #: ")
case pb.Person_WORK:
fmt.Fprint(w, " Work phone #: ")
}
fmt.Fprintln(w, pn.Number)
for _, pn := range p.Phones {
switch pn.Type {
case pb.Person_MOBILE:
fmt.Fprint(w, " Mobile phone #: ")
case pb.Person_HOME:
fmt.Fprint(w, " Home phone #: ")
case pb.Person_WORK:
fmt.Fprint(w, " Work phone #: ")
}
fmt.Fprintln(w, pn.Number)
}
}

func listPeople(w io.Writer, book *pb.AddressBook) {
for _, p := range book.People {
writePerson(w, p)
}
}

Expand All @@ -41,19 +45,17 @@ func main() {
}
fname := os.Args[1]

// [START unmarshal_proto]
// Read the existing address book.
in, err := ioutil.ReadFile(fname)
if err != nil {
if os.IsNotExist(err) {
fmt.Printf("%s: File not found. Creating new file.\n", fname)
} else {
log.Fatalln("Error reading file:", err)
}
log.Fatalln("Error reading file:", err)
}
book := &pb.AddressBook{}
if err := proto.Unmarshal(in, book); err != nil {
log.Fatalln("Failed to parse address book:", err)
}
// [END unmarshal_proto]

listPeople(os.Stdout, book)
}
24 changes: 24 additions & 0 deletions examples/list_people_test.go
Expand Up @@ -8,6 +8,30 @@ import (
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{
Expand Down

0 comments on commit 9e1777f

Please sign in to comment.