我正在通过测试学习围棋。从“Head First Go”的第 2 章末尾,我得到了以下程序。
它让用户尝试从 1 到 10 猜测一个数字 3 次:
guess.go
package main
import (
"fmt"
"math/rand"
"time"
"bufio"
"os"
"log"
"strconv"
"strings"
)
func generateRandomNumber() int {
rand.Seed(time.Now().Unix()) // seed value based on time to generate non-deterministic random values
randomNum := rand.Intn(10) + 1 // range: [0, 10); produces the same value without Seed(), i.e., pseudo-random
return randomNum
}
func guess() int {
var success bool = false
target := generateRandomNumber()
fmt.Println("Guess a number between 1 and 10")
guess := bufio.NewReader(os.Stdin)
for attempts := 0; attempts < 3; attempts++ {
fmt.Println("You have", 3-attempts, "guesses left")
userVal, err := guess.ReadString('\n')
if err != nil {
log.Fatal(err)
}
input := strings.TrimSpace(userVal)
answer, err := strconv.Atoi(input)
if err != nil {
log.Fatal(err)
}
if answer == target {
fmt.Println("Congratulations !!")
return answer
} else if answer > target {
fmt.Println("Your guess was HIGHER")
} else if answer < target {
fmt.Println("Your guess was LOWER")
}
}
if !success {
fmt.Printf("Sorry, you've run out of attempts... The correct value is %d\n", target)
return target
}
return 0
}
func main() {
guess()
}
guess_test.go
package main
import (
"testing"
)
func TestRandomNumber(t *testing.T) {
want := generateRandomNumber()
if 7 != want {
t.Fail()
t.Logf("Incorrect guess; The random number was %d", want)
}
}
如何guess()通过传入三个不同的输入进行测试?
我想通过比较 with 的返回值来进行guess()测试generateRandomNumber()。
繁花如伊
相关分类