60 lines
1.4 KiB
Ruby
60 lines
1.4 KiB
Ruby
require "minitest/autorun"
|
|
require "combination"
|
|
|
|
TEST_COMBINATION = <<END
|
|
L68
|
|
L30
|
|
R48
|
|
L5
|
|
R60
|
|
L55
|
|
L1
|
|
L99
|
|
R14
|
|
L82
|
|
END
|
|
|
|
class TestCombination < Minitest::Test
|
|
def test_safe
|
|
safe = Combination::Safe.new
|
|
assert_equal 50, safe.count
|
|
assert_equal 0, safe.zero_clicks
|
|
safe.apply_step Combination::Step.for("L68")
|
|
assert_equal 82, safe.count
|
|
assert_equal 1, safe.zero_clicks
|
|
safe.apply_step Combination::Step.for("L30")
|
|
assert_equal 52, safe.count
|
|
assert_equal 1, safe.zero_clicks
|
|
safe.apply_step Combination::Step.for("R48")
|
|
assert_equal 0, safe.count
|
|
assert_equal 2, safe.zero_clicks
|
|
safe.apply_step Combination::Step.for("R300")
|
|
assert_equal 0, safe.count
|
|
assert_equal 5, safe.zero_clicks
|
|
safe.apply_step Combination::Step.for("L602")
|
|
assert_equal 98, safe.count
|
|
assert_equal 11, safe.zero_clicks
|
|
|
|
0.upto(99) do |count|
|
|
safe = Combination::Safe.new
|
|
safe.apply_step Combination::Step.for("L50")
|
|
safe.apply_step Combination::Step.new("R", count)
|
|
assert_equal count, safe.count
|
|
assert_equal 1, safe.zero_clicks
|
|
end
|
|
end
|
|
|
|
def test_zero_count
|
|
combination = Combination.for TEST_COMBINATION
|
|
assert_equal 3, combination.zero_count
|
|
end
|
|
|
|
def test_zero_clicks
|
|
combination = Combination.for TEST_COMBINATION
|
|
assert_equal 6, combination.zero_click_count
|
|
|
|
combination = Combination.for "R1000"
|
|
assert_equal 10, combination.zero_click_count
|
|
end
|
|
end
|