From 776908fec3afb09f12d4f5576acf985ada56a1cf Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Wed, 15 Mar 2023 17:09:26 +0100 Subject: [PATCH] Implement guess check --- lib/lib.go | 11 +++++++++++ lib/lib_test.go | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 lib/lib.go create mode 100644 lib/lib_test.go diff --git a/lib/lib.go b/lib/lib.go new file mode 100644 index 0000000..a595931 --- /dev/null +++ b/lib/lib.go @@ -0,0 +1,11 @@ +package lib + +func CheckGuess(guess, random int) (string, bool) { + if guess == random { + return "Good job!", true + } + if random > guess { + return "Try higher.", false + } + return "Nope, lower.", false +} diff --git a/lib/lib_test.go b/lib/lib_test.go new file mode 100644 index 0000000..8a0884d --- /dev/null +++ b/lib/lib_test.go @@ -0,0 +1,50 @@ +package lib + +import ( + "testing" +) + +/* +Requirements: +The app selects a random number between 1 and 100 +The app then asks the player to guess the number. +If the guess is correct, then the player wins. The app displays +the number of guesses it took and exits. +If the guess is incorrect, the app prints whether the selected number +is higher or lower than the guess. +Then, the app prompts the player again, etc. +*/ + +func TestCheckGuess(t *testing.T) { + t.Run("guess is lower than random", func(t *testing.T) { + random := 63 + guess := 50 + wantStatus := "Try higher." + + assertCheckGuess(t, guess, random, wantStatus, false) + }) + t.Run("guess is higher than random", func(t *testing.T) { + random := 34 + guess := 50 + wantStatus := "Nope, lower." + + assertCheckGuess(t, guess, random, wantStatus, false) + }) + t.Run("guess is equal to random", func(t *testing.T) { + random := 50 + guess := 50 + wantStatus := "Good job!" + + assertCheckGuess(t, guess, random, wantStatus, true) + }) +} + +func assertCheckGuess(t *testing.T, guess, random int, wantStatus string, wantWon bool) { + status, won := CheckGuess(guess, random) + if status != wantStatus { + t.Errorf("got %q want %q", status, wantStatus) + } + if won != wantWon { + t.Errorf("got %v want %v", won, wantWon) + } +}