Go Fizzbuzz
Published: Sep 22, 2018
Last updated: Sep 22, 2018
A basic implementation of the infamous Fizz Buzz with unit testing.
Setting up the test
Set up fizz_buzz_test.go
with the following file:
package fizzbuzz import "testing" func TestReturnString(t *testing.T) { expected := "2" if observed := FizzBuzz(2); observed != expected { t.Fatalf("FizzBuzz(2)) = %v, want %v", observed, expected) } } func TestFizz(t *testing.T) { expected := "Fizz" if observed := FizzBuzz(3); observed != expected { t.Fatalf("FizzBuzz(3)) = %v, want %v", observed, expected) } } func TestBuzz(t *testing.T) { expected := "Buzz" if observed := FizzBuzz(5); observed != expected { t.Fatalf("FizzBuzz(5)) = %v, want %v", observed, expected) } } func TestFizzBuzz(t *testing.T) { expected := "FizzBuzz" if observed := FizzBuzz(15); observed != expected { t.Fatalf("FizzBuzz(15)) = %v, want %v", observed, expected) } } // BenchmarkFizzBuzz() is a benchmarking function. These functions follow the // form `func BenchmarkXxx(*testing.B)` and can be used to test the performance // of your implementation. They may not be present in every exercise, but when // they are you can run them by including the `-bench` flag with the `go test` // command, like so: `go test -v --bench . --benchmem` // // You will see output similar to the following: // // BenchmarkFizzBuzz 2000000000 0.46 ns/op // // This means that the loop ran 2000000000 times at a speed of 0.46 ns per loop. // // While benchmarking can be useful to compare different iterations of the same // exercise, keep in mind that others will run the same benchmarks on different // machines, with different specs, so the results from these benchmark tests may // vary. func BenchmarkFizzBuzz(b *testing.B) { for i := 0; i < b.N; i++ { FizzBuzz(15) } }
Fizz Buzz implementation
We will use the interger-to-ASCII function itoa
from the strings
library.
package fizzbuzz import "strconv" // FizzBuzz should have a comment documenting it. func FizzBuzz(i int) string { switch true { case i%15 == 0: return "FizzBuzz" case i%3 == 0: return "Fizz" case i%5 == 0: return "Buzz" default: return strconv.Itoa(i) } }
Running Tests
In the directory, run go test
.
Dennis O'Keeffe
Melbourne, Australia
1,200+ PEOPLE ALREADY JOINED ❤️️
Get fresh posts + news direct to your inbox.
No spam. We only send you relevant content.
Go Fizzbuzz
Introduction