diff --git a/go/go.mod b/go/go.mod new file mode 100644 index 0000000..afdf576 --- /dev/null +++ b/go/go.mod @@ -0,0 +1,3 @@ +module hello + +go 1.17 diff --git a/go/hello.go b/go/hello.go index f77fc42..927310e 100644 --- a/go/hello.go +++ b/go/hello.go @@ -2,6 +2,28 @@ package main import "fmt" -func main() { - fmt.Println("Hello, World") +const englishHelloPrefix = "Hello, " +const welsh = "Welsh" +const welshHelloPrefix = "Helo, " + +func Hello(name string, language string) string { + if name == "" { + name = "World" + } + + return greetingPrefix(language) + name +} + +func greetingPrefix(language string) (prefix string) { + prefix = englishHelloPrefix + + if language == welsh { + prefix = welshHelloPrefix + } + + return +} + +func main() { + fmt.Println(Hello("Oliver", "")) } diff --git a/go/hello_test.go b/go/hello_test.go new file mode 100644 index 0000000..2f6c2f0 --- /dev/null +++ b/go/hello_test.go @@ -0,0 +1,34 @@ +package main + +import "testing" + +func TestHello(t *testing.T) { + assertCorrectMessage := func(t testing.TB, got string, want string) { + t.Helper() + + if got != want { + t.Errorf("got %q want %q", got, want) + } + } + + t.Run("saying hello to people", func (t *testing.T) { + got := Hello("Oliver", "") + want := "Hello, Oliver" + + assertCorrectMessage(t, got, want) + }) + + t.Run("say 'Hello, World' when an empty string is supplied", func (t *testing.T) { + got := Hello("", "") + want := "Hello, World" + + assertCorrectMessage(t, got, want) + }) + + t.Run("in Welsh", func (t *testing.T) { + got := Hello("Oliver", "Welsh") + want := "Helo, Oliver" + + assertCorrectMessage(t, got, want) + }) +}