| package main |
| |
| import ( |
| "strings" |
| "testing" |
| |
| "github.com/golang/protobuf/proto" |
| pb "github.com/protocolbuffers/protobuf/examples/tutorial" |
| ) |
| |
| func TestPromptForAddressReturnsAddress(t *testing.T) { |
| in := `12345 |
| Example Name |
| name@example.com |
| 123-456-7890 |
| home |
| 222-222-2222 |
| mobile |
| 111-111-1111 |
| work |
| 777-777-7777 |
| unknown |
| |
| ` |
| got, err := promptForAddress(strings.NewReader(in)) |
| if err != nil { |
| t.Fatalf("promptForAddress(%q) had unexpected error: %s", in, err.Error()) |
| } |
| if got.Id != 12345 { |
| t.Errorf("promptForAddress(%q) got %d, want ID %d", in, got.Id, 12345) |
| } |
| if got.Name != "Example Name" { |
| t.Errorf("promptForAddress(%q) => want name %q, got %q", in, "Example Name", got.Name) |
| } |
| if got.Email != "name@example.com" { |
| t.Errorf("promptForAddress(%q) => want email %q, got %q", in, "name@example.com", got.Email) |
| } |
| |
| want := []*pb.Person_PhoneNumber{ |
| {Number: "123-456-7890", Type: pb.Person_HOME}, |
| {Number: "222-222-2222", Type: pb.Person_MOBILE}, |
| {Number: "111-111-1111", Type: pb.Person_WORK}, |
| {Number: "777-777-7777", Type: pb.Person_MOBILE}, |
| } |
| if len(got.Phones) != len(want) { |
| t.Errorf("want %d phone numbers, got %d", len(want), len(got.Phones)) |
| } |
| phones := len(got.Phones) |
| if phones > len(want) { |
| phones = len(want) |
| } |
| for i := 0; i < phones; i++ { |
| if !proto.Equal(got.Phones[i], want[i]) { |
| t.Errorf("want phone %q, got %q", *want[i], *got.Phones[i]) |
| } |
| |
| } |
| } |