Skip to content

Instantly share code, notes, and snippets.

@zeedunk
Forked from oferrigni/fizzbuzz.erl
Created March 1, 2011 14:57
Show Gist options
  • Save zeedunk/849232 to your computer and use it in GitHub Desktop.
Save zeedunk/849232 to your computer and use it in GitHub Desktop.
-module(fizzbuzz).
-export([fizzbuzz/1,fizzbuzzify/1]).
fizzbuzz(HighNum) -> lists:map(
fun (Num) ->
fizzbuzzify(Num, {Num rem 3, Num rem 5})
end, lists:seq(1, HighNum)).
fizzbuzzify(_Input,{0, 0})-> "fizzbuzz";
fizzbuzzify(_Input,{0, _})-> "fizz";
fizzbuzzify(_Input,{_, 0})-> "buzz";
fizzbuzzify(_Input,{_, _})-> _Input.
-module(fizzbuzz_test).
-include_lib("eunit/include/eunit.hrl").
% tests from here down.
fizzbuzzify_not_divisible_by_three_or_five_test() ->
?assert(fizzbuzz:fizzbuzzify(1) == 1).
fizzbuzzify_should_turn_three_into_fizz_test() ->
?assert(fizzbuzz:fizzbuzzify(3) == "fizz").
fizzbuzzify_should_turn_mulitples_of_three_into_fizz_test() ->
?assert(fizzbuzz:fizzbuzzify(6) == "fizz"),
?assert(fizzbuzz:fizzbuzzify(9) == "fizz"),
?assert(fizzbuzz:fizzbuzzify(12) == "fizz").
fizzbuzzify_should_turn_five_into_buzz_test() ->
?assert(fizzbuzz:fizzbuzzify(5) == "buzz").
fizzbuzzify_should_turn_multiples_of_five_into_buzz_test() ->
?assert(fizzbuzz:fizzbuzzify(10) == "buzz"),
?assert(fizzbuzz:fizzbuzzify(20) == "buzz"),
?assert(fizzbuzz:fizzbuzzify(25) == "buzz").
fizzbuzzify_should_turn_multiples_of_three_and_five_into_fizzbuzz_test() ->
?assert(fizzbuzz:fizzbuzzify(15) == "fizzbuzz").
fizzbuzz_empty_list_test() ->
?assert(fizzbuzz:fizzbuzz([]) == []).
fizzbuzz_with_one_element_should_fizzbuzzify_that_element_test() ->
?assert(fizzbuzz:fizzbuzz([3]) == ["fizz"]),
?assert(fizzbuzz:fizzbuzz([5]) == ["buzz"]),
?assert(fizzbuzz:fizzbuzz([15]) == ["fizzbuzz"]),
?assert(fizzbuzz:fizzbuzz([14]) == [14]).
fizzbuzz_with_multiple_elements_should_fizzbuzzify_all_elements_test() ->
?assert(fizzbuzz:fizzbuzz([2,3,5,15]) == [2, "fizz", "buzz", "fizzbuzz"]).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment