Add hello package with tests
This commit is contained in:
		
							
								
								
									
										3
									
								
								hello/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								hello/go.mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| module hello | ||||
|  | ||||
| go 1.17 | ||||
							
								
								
									
										33
									
								
								hello/hello.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								hello/hello.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| package main | ||||
|  | ||||
| import "fmt" | ||||
|  | ||||
| const spanish = "Spanish" | ||||
| const french = "French" | ||||
|  | ||||
| const englishHelloPrefix = "Hello, " | ||||
| const spanishHelloPrefix = "Hola, " | ||||
| const frenchHelloPrefix = "Bonjour, " | ||||
|  | ||||
| func Hello(name string, language string) string { | ||||
| 	if name == "" { | ||||
| 		name = "World" | ||||
| 	} | ||||
|  | ||||
| 	return greetingPrefix(language) + name | ||||
| } | ||||
|  | ||||
| func greetingPrefix(language string) (prefix string) { | ||||
| 	switch language { | ||||
| 	case french: | ||||
| 		prefix = frenchHelloPrefix | ||||
| 	case spanish: | ||||
| 		prefix = spanishHelloPrefix | ||||
| 	default: | ||||
| 		prefix = englishHelloPrefix | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| func main() { | ||||
| 	fmt.Println(Hello("world", "")) | ||||
| } | ||||
							
								
								
									
										28
									
								
								hello/hello_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								hello/hello_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| package main | ||||
|  | ||||
| import "testing" | ||||
|  | ||||
| func TestHello(t *testing.T) { | ||||
| 	assertCorrectMessage := func(t testing.TB, got, 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("Chris", "") | ||||
| 		want := "Hello, Chris" | ||||
| 		assertCorrectMessage(t, got, want) | ||||
| 	}) | ||||
| 	t.Run("empty string defaults to 'World'", func(t *testing.T) { | ||||
| 		got := Hello("", "") | ||||
| 		want := "Hello, World" | ||||
| 		assertCorrectMessage(t, got, want) | ||||
| 	}) | ||||
| 	t.Run("in Spanish", func(t *testing.T) { | ||||
| 		got := Hello("Elodie", "Spanish") | ||||
| 		want := "Hola, Elodie" | ||||
| 		assertCorrectMessage(t, got, want) | ||||
| 	}) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user