RosettaCodeData/Task/Straddling-checkerboard/Ruby/straddling-checkerboard-2.rb
2023-07-01 13:44:08 -04:00

40 lines
1.2 KiB
Ruby

require 'test/unit'
class StraddlingCheckerboardTest < Test::Unit::TestCase
def setup
@msg = "One night-it was on the twentieth of March, 1888-I was returning"
@expected = "ONENIGHTITWASONTHETWENTIETHOFMARCH1888IWASRETURNING"
end
def test1
sc = StraddlingCheckerboard.new "ET AON RISBCDFGHJKLMPQ/UVWXYZ."
code = sc.encode(@msg)
plaintext = sc.decode(code)
puts "using checkerboard: #{sc}"
puts "original: #{@msg}"
puts "encoded: #{code}"
puts "decoded: #{plaintext}"
assert_equal("450582425181653945125016505180125423293721256216286286288653970163758524", code)
assert_equal(@expected, plaintext)
end
def test_board_with_space_in_first_char
sc = StraddlingCheckerboard.new " RIOESN ATG./LXYBDKQMJUHWPVCFZ"
code = sc.encode(@msg)
plaintext = sc.decode(code)
#p sc
#puts "encoded: #{code}"
#puts "decoded: #{plaintext}"
assert_equal(@expected, plaintext)
end
def test_random_board
sc = StraddlingCheckerboard.new
plaintext = sc.decode(sc.encode(@msg))
assert_equal(@expected, plaintext)
end
def test_invalid_input
assert_raise(ArgumentError) {StraddlingCheckerboard.new "ET ON RISBCDFGHJKLMPQ/UVWXYZ.!"}
end
end