-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathFizzBuzz.rb
83 lines (66 loc) · 1.89 KB
/
FizzBuzz.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Problema :
# Imagine uma brincadeira onde crianças falam um número em ordem (1,2,3…).
# Se o número for múltiplo de 3 então a criança deve dizer Fizz ao invés do número,
# se o número for múltiplo de 5 então a criança deve dizer Buzz,
# por fim se as duas condições forem verdadeiras então a criança precisa dizer FizzBuzz.
require "test/unit"
class FizzBuzz
def falar(numero)
if multiplo_de_3(numero) && multiplo_de_5(numero)
"FizzBuzz"
elsif multiplo_de_3(numero)
"Fizz"
elsif multiplo_de_5(numero)
"Buzz"
else
numero
end
end
def jogar(numeros)
numeros.map! { |n| self.falar(n) }
#resultado = []
#numeros.each do |n|
# resultado << self.falar(n)
#end
#resultado
end
private
def multiplo_de_5(numero)
numero % 5 == 0
end
def multiplo_de_3(numero)
numero % 3 == 0
end
end
class FizzBuzzTest < Test::Unit::TestCase
def setup
@fizzBuzz = FizzBuzz.new
end
def test_1_fale_1
assert_equal(1, @fizzBuzz.falar(1))
end
def test_2_fale_2
assert_equal(2, @fizzBuzz.falar(2))
end
def test_3_fale_fizz
assert_equal("Fizz", @fizzBuzz.falar(3))
end
def test_6_fale_fizz
assert_equal("Fizz", @fizzBuzz.falar(6))
end
def test_5_fale_buzz
assert_equal("Buzz", @fizzBuzz.falar(5))
end
def test_10_fale_buzz
assert_equal("Buzz", @fizzBuzz.falar(10))
end
def test_15_fale_fizzbuzz
assert_equal("FizzBuzz", @fizzBuzz.falar(15))
end
def test_30_fale_fizzbuzz
assert_equal("FizzBuzz", @fizzBuzz.falar(30))
end
def test_1_2_3_4_5_15_fale_1_2_fizz_4_buzz_fizzbuzz
assert_equal([1,2,"Fizz",4,"Buzz", "FizzBuzz"], @fizzBuzz.jogar([1,2,3,4,5,15]))
end
end