greet/greet_test.go

74 lines
1.7 KiB
Go

package main
import (
"bytes"
"testing"
)
// TestGreetNoArguments tests the greeter's response when given no names.
func TestGreetNoArguments(t *testing.T) {
t.Parallel()
buffer := new(bytes.Buffer)
args := make([]string, 0)
if err := greet(buffer, args); err != nil {
t.Fatalf("an error occurred 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) {
t.Parallel()
buffer := new(bytes.Buffer)
args := []string{"Sarah"}
if err := greet(buffer, args); err != nil {
t.Fatalf("an error occurred 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) {
t.Parallel()
buffer := new(bytes.Buffer)
args := []string{"Bob", "John"}
err := greet(buffer, args)
if err == nil {
t.Error("unexpected nil error returned.")
}
want := "unexpected number of arguments passed to the greeter: want 0 or 1 argument, got 2"
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)
}
}