package main import ( "bytes" "testing" ) // TestGreetNoArguments tests the greeter's response when given no names. func TestGreetNoArguments(t *testing.T) { buffer := new(bytes.Buffer) args := make([]string, 0) if err := greet(buffer, args); err != nil { t.Fatalf("an error occured while running greet(): %s", err) } want := "Hello, World!\n" got := buffer.String() if want != got { t.Errorf("unexpected output returned from greet(): want '%s', got '%s'", want, got) } else { t.Logf("expected output returned from greet(): got '%s'", got) } } // TestGreetOneArgument tests the greeter's response when given one name. func TestGreetOneArgument(t *testing.T) { buffer := new(bytes.Buffer) args := []string{"Sarah"} if err := greet(buffer, args); err != nil { t.Fatalf("an error occured while running greet(): %s", err) } want := "Hello, Sarah!\n" got := buffer.String() if want != got { t.Errorf("unexpected output returned from greet(): want '%s', got '%s'", want, got) } else { t.Logf("expected output returned from greet(): got '%s'", got) } } // TestGreetTwoArguments tests the greeter's response when given two names. func TestGreetTwoArguments(t *testing.T) { buffer := new(bytes.Buffer) args := []string{"Bob", "John"} want := "unexpected number of arguments passed to the greeter: want 0 or 1 argument, got 2" err := greet(buffer, args) if err == nil { t.Error("unexpected nil error returned.") } got := err.Error() if want != got { t.Errorf("unexpected error message returned: want '%s', got '%s'", want, got) } else { t.Logf("expected error message returned: got '%s'", got) } }