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

Popular posts from this blog

Handling and Tyre wear patterns

Getting FlashFloppy onto the Gotek SFRC922D