62 lines
1.6 KiB
Ruby
62 lines
1.6 KiB
Ruby
require 'minitest/autorun'
|
|
require_relative 'rail_fence_cipher'
|
|
|
|
class RailFenceCipherTest < Minitest::Test
|
|
def test_encode_with_empty_string
|
|
# skip
|
|
assert_equal '', RailFenceCipher.encode('', 4)
|
|
end
|
|
|
|
def test_encode_with_one_rail
|
|
# skip
|
|
assert_equal 'One rail, only one rail',
|
|
RailFenceCipher.encode('One rail, only one rail', 1)
|
|
end
|
|
|
|
def test_encode_with_two_rails
|
|
# skip
|
|
assert_equal 'XXXXXXXXXOOOOOOOOO',
|
|
RailFenceCipher.encode('XOXOXOXOXOXOXOXOXO', 2)
|
|
end
|
|
|
|
def test_encode_with_three_rails
|
|
# skip
|
|
assert_equal 'WECRLTEERDSOEEFEAOCAIVDEN',
|
|
RailFenceCipher.encode('WEAREDISCOVEREDFLEEATONCE', 3)
|
|
end
|
|
|
|
def test_encode_with_ending_in_the_middle
|
|
# skip
|
|
assert_equal 'ESXIEECSR', RailFenceCipher.encode('EXERCISES', 4)
|
|
end
|
|
|
|
def test_encode_with_less_letters_than_rails
|
|
# skip
|
|
assert_equal 'More rails than letters',
|
|
RailFenceCipher.encode('More rails than letters', 24)
|
|
end
|
|
|
|
def test_decode_with_empty_string
|
|
# skip
|
|
assert_equal '', RailFenceCipher.decode('', 4)
|
|
end
|
|
|
|
def test_decode_with_one_rail
|
|
# skip
|
|
assert_equal 'ABCDEFGHIJKLMNOP',
|
|
RailFenceCipher.decode('ABCDEFGHIJKLMNOP', 1)
|
|
end
|
|
|
|
def test_decode_with_two_rails
|
|
# skip
|
|
assert_equal 'XOXOXOXOXOXOXOXOXO',
|
|
RailFenceCipher.decode('XXXXXXXXXOOOOOOOOO', 2)
|
|
end
|
|
|
|
def test_decode_with_three_rails
|
|
# skip
|
|
assert_equal 'THEDEVILISINTHEDETAILS',
|
|
RailFenceCipher.decode('TEITELHDVLSNHDTISEIIEA', 3)
|
|
end
|
|
end
|