aoc_omni/ruby/2025/1/test/test_combination.rb
2025-12-01 04:03:24 -05:00

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