Skip to content

Commit f714991

Browse files
authored
Update resistor-color-trio (#1794)
1 parent 2910fa2 commit f714991

2 files changed

Lines changed: 59 additions & 8 deletions

File tree

exercises/practice/resistor-color-trio/.meta/example.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
class ResistorColorTrio
22
COLOR_CODES = %i[black brown red orange yellow green blue violet grey white].freeze
3+
LABELS = %w[ohms kiloohms megaohms gigaohms teraohms].freeze
34

45
def initialize(colors)
56
@colors = colors.map(&:to_sym)
67
@tens, @ones, @zeros = @colors
78
end
89

910
def label
10-
"Resistor value: #{to_s}"
11+
"Resistor value: #{self}"
1112
end
1213

1314
private
14-
1515
attr_reader :tens, :ones, :zeros
1616

1717
def significants
@@ -27,6 +27,12 @@ def value
2727
end
2828

2929
def to_s
30-
value < 1000 ? "#{value} ohms" : "#{(value.to_f/1000).to_i} kiloohms"
30+
index = 0
31+
value_copy = value
32+
while value_copy >= 1000 && index < LABELS.size - 1
33+
value_copy /= 1000
34+
index += 1
35+
end
36+
"#{value_copy} #{LABELS[index]}"
3137
end
3238
end

exercises/practice/resistor-color-trio/resistor_color_trio_test.rb

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,71 @@
44
class ResistorColorTrioTest < Minitest::Test
55
def test_orange_and_orange_and_black
66
# skip
7-
assert_equal "Resistor value: 33 ohms", ResistorColorTrio.new(%w[orange orange black]).label
7+
actual = ResistorColorTrio.new(%w[orange orange black]).label
8+
expected = 'Resistor value: 33 ohms'
9+
assert_equal expected, actual
810
end
911

1012
def test_blue_and_grey_and_brown
1113
skip
12-
assert_equal "Resistor value: 680 ohms", ResistorColorTrio.new(%w[blue grey brown]).label
14+
actual = ResistorColorTrio.new(%w[blue grey brown]).label
15+
expected = 'Resistor value: 680 ohms'
16+
assert_equal expected, actual
1317
end
1418

1519
def test_red_and_black_and_red
1620
skip
17-
assert_equal "Resistor value: 2 kiloohms", ResistorColorTrio.new(%w[red black red]).label
21+
actual = ResistorColorTrio.new(%w[red black red]).label
22+
expected = 'Resistor value: 2 kiloohms'
23+
assert_equal expected, actual
1824
end
1925

2026
def test_green_and_brown_and_orange
2127
skip
22-
assert_equal "Resistor value: 51 kiloohms", ResistorColorTrio.new(%w[green brown orange]).label
28+
actual = ResistorColorTrio.new(%w[green brown orange]).label
29+
expected = 'Resistor value: 51 kiloohms'
30+
assert_equal expected, actual
2331
end
2432

2533
def test_yellow_and_violet_and_yellow
2634
skip
27-
assert_equal "Resistor value: 470 kiloohms", ResistorColorTrio.new(%w[yellow violet yellow]).label
35+
actual = ResistorColorTrio.new(%w[yellow violet yellow]).label
36+
expected = 'Resistor value: 470 kiloohms'
37+
assert_equal expected, actual
38+
end
39+
40+
def test_blue_and_violet_and_blue
41+
skip
42+
actual = ResistorColorTrio.new(%w[blue violet blue]).label
43+
expected = 'Resistor value: 67 megaohms'
44+
assert_equal expected, actual
45+
end
46+
47+
def test_minimum_possible_value
48+
skip
49+
actual = ResistorColorTrio.new(%w[black black black]).label
50+
expected = 'Resistor value: 0 ohms'
51+
assert_equal expected, actual
52+
end
53+
54+
def test_maximum_possible_value
55+
skip
56+
actual = ResistorColorTrio.new(%w[white white white]).label
57+
expected = 'Resistor value: 99 gigaohms'
58+
assert_equal expected, actual
59+
end
60+
61+
def test_first_two_colors_make_an_invalid_octal_number
62+
skip
63+
actual = ResistorColorTrio.new(%w[black grey black]).label
64+
expected = 'Resistor value: 8 ohms'
65+
assert_equal expected, actual
66+
end
67+
68+
def test_ignore_extra_colors
69+
skip
70+
actual = ResistorColorTrio.new(%w[blue green yellow orange]).label
71+
expected = 'Resistor value: 650 kiloohms'
72+
assert_equal expected, actual
2873
end
2974
end

0 commit comments

Comments
 (0)