開発環境
- macOS High Sierra - Apple (OS)
- Emacs (Text Editor)
- Go (プログラミング言語)
Introducing Go: Build Reliable, Scalable Programs (Caleb Doxsey (著)、O'Reilly Media)のChapter 9.(Testing)、Exercises(No. 1866)2.を取り組んでみる。
コード(Emacs)
~/go/src/introducing-go/chapter8/math/math_test.go(GOPATH="~/go")
package math import "testing" type testpair struct { values []float64 value float64 } var testsAverage = []testpair{ {[]float64{}, 0}, {[]float64{1}, 1}, {[]float64{1, 2}, 1.5}, {[]float64{1, 2, 3, 4, 5}, 3}, {[]float64{-1, 1}, 0}, } func TestAverage(t *testing.T) { for _, pair := range testsAverage { v := Average(pair.values) if v != pair.value { t.Error( "For", pair.values, "expected", pair.value, "got", v, ) } } } var testsMin = []testpair{ {[]float64{}, 0}, {[]float64{1}, 1}, {[]float64{1, 2}, 1}, {[]float64{5, 1, 4, 2, 3}, 1}, {[]float64{1, -1, 0}, -1}, } func TestMin(t *testing.T) { for _, pair := range testsMin { v := Min(pair.values) if v != pair.value { t.Error( "For", pair.values, "expected", pair.value, "got", v, ) } } } var testsMax = []testpair{ {[]float64{}, 0}, {[]float64{1}, 1}, {[]float64{1, 2}, 2}, {[]float64{1, 5, 2, 4, 3}, 5}, {[]float64{-1, 1, 0}, 1}, } func TestMax(t *testing.T) { for _, pair := range testsMax { v := Max(pair.values) if v != pair.value { t.Error( "For", pair.values, "expected", pair.value, "got", v, ) } } }
~/go/src/introducing-go/chapter8/math/math.go(GOPATH="~/go")
// Package math provides Min and Max functions that find the minimum and maximum // values in a slice of float64s package math func Average(xs []float64) float64 { if len(xs) == 0 { return 0 } total := 0.0 for _, v := range xs { total += v } return total / float64(len(xs)) } // Finds the minimum values in a slice of float64s func Min(xs []float64) float64 { if len(xs) == 0 { return 0 } m := xs[0] for _, x := range xs[1:] { if x < m { m = x } } return m } // Finds the maxmum values in a slice of float64s func Max(xs []float64) float64 { if len(xs) == 0 { return 0 } m := xs[0] for _, x := range xs[1:] { if x > m { m = x } } return m }
入出力結果(Terminal)
$ go test PASS ok introducing-go/chapter8/math 0.005s $ go test -v === RUN TestAverage --- PASS: TestAverage (0.00s) === RUN TestMin --- PASS: TestMin (0.00s) === RUN TestMax --- PASS: TestMax (0.00s) PASS ok introducing-go/chapter8/math 0.005s $
0 コメント:
コメントを投稿