Go - Tests - Fizzbuzz
Using FizzBuzz as an example.
main_test.go
package main
import "testing"
import "github.com/stretchr/testify/assert"
func Test_run(t *testing.T) {
fb := run(1,15)
assert.Equal(t, "1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz", fb)
}
main.go
package main
import "fmt"
import "strconv"
import "strings"
func main() {
fmt.Println("FizzBuzz Test")
}
func run(N int, M int) string {
out := []string{}
for i := N; i<=M; i++ {
out = append(out, fizzbuzz(i))
}
return strings.Join(out, ",")
}
func fizzbuzz(n int) string {
switch {
case (n % 3 == 0) && (n % 5 ==0): return "FizzBuzz"
case n % 3 == 0: return "Fizz"
case n % 5 == 0: return "Buzz"
default: return strconv.Itoa(n)
}
}
go.mod
module fizz
go 1.18
require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/stretchr/testify v1.9.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Run the test
go test

Comments
Post a Comment