45 lines
1.1 KiB
Ruby
45 lines
1.1 KiB
Ruby
require "minitest/autorun"
|
|
|
|
require "laboratories"
|
|
|
|
class TestLaboratories < Minitest::Test
|
|
def test_split_count
|
|
lab = Laboratories.for <<-END
|
|
.......S.......
|
|
...............
|
|
.......^.......
|
|
...............
|
|
......^.^......
|
|
...............
|
|
.....^.^.^.....
|
|
...............
|
|
....^.^...^....
|
|
...............
|
|
...^.^...^.^...
|
|
...............
|
|
..^...^.....^..
|
|
...............
|
|
.^.^.^.^.^...^.
|
|
...............
|
|
END
|
|
assert_equal(21, lab.split_count)
|
|
end
|
|
end
|
|
|
|
class TestLayer < Minitest::Test
|
|
def test_split_beams
|
|
layer = Laboratories::Layer.for(".S.")
|
|
assert_equal([[false, true, false], 0], layer.split_beams([false, false, false]))
|
|
|
|
layer = Laboratories::Layer.for("..")
|
|
assert_equal([[true, false], 0], layer.split_beams([true, false]))
|
|
|
|
layer = Laboratories::Layer.for(".^.")
|
|
assert_equal([[true, false, true], 1], layer.split_beams([false, true, false]))
|
|
|
|
layer = Laboratories::Layer.for("^.^")
|
|
assert_equal([[false, true, false], 0], layer.split_beams([false, true, false]))
|
|
assert_equal([[false, true, false], 2], layer.split_beams([true, false, true]))
|
|
end
|
|
end
|