def test_encode_with_three_rails(self): self.assertMultiLineEqual(encode("WEAREDISCOVEREDFLEEATONCE", 3), "WECRLTEERDSOEEFEAOCAIVDEN") self.assertMultiLineEqual( encode("we are discovered, flee at once!", 3), "WECRLTEERDSOEEFEAOCAIVDEN") self.assertMultiLineEqual(encode("FOOBARS", 3), "FAOBROS")
def test_encode_with_two_rails(self): self.assertMultiLineEqual( encode('XOXOXOXOXOXOXOXOXO', 2), 'XXXXXXXXXOOOOOOOOO') self.assertMultiLineEqual( encode('BEARS', 2), 'BASER') self.assertMultiLineEqual( encode('BEARSANDBIRDS', 2,), 'BASNBRSERADID' )
def test_encode_decode_identity(self): for msg, rails in [ ("XOXOXOXOXOXOXOXOXO", 2), ("WEAREDISCOVEREDFLEEATONCE", 3), ("THEDEVILISINTHEDETAILS", 3), ("THEDEVILISINTHEDETAILS", 5), ("133714114238148966225439541018335470986172518171757571896261", 6) ]: self.assertMultiLineEqual(decode(encode(msg, rails), rails), msg)
def test_encode_with_three_rails(self): self.assertMultiLineEqual(encode("WEAREDISCOVEREDFLEEATONCE", 3), "WECRLTEERDSOEEFEAOCAIVDEN")
def test_encode_with_two_rails(self): self.assertMultiLineEqual( encode('XOXOXOXOXOXOXOXOXO', 2), 'XXXXXXXXXOOOOOOOOO')
def test_encode_with_middle_stop(self): self.assertMultiLineEqual(encode('EXERCISES', 4), 'ESXIEECSR')
def test_encode_with_empty_string(self): self.assertEqual(encode('', 2), '')
def test_encode_with_three_rails(self): self.assertMultiLineEqual( encode('WEAREDISCOVEREDFLEEATONCE', 3), 'WECRLTEERDSOEEFEAOCAIVDEN') self.assertMultiLineEqual( encode('ALLBYMYSELF', 3), 'AYELBMSLLYF')
def test_encode_with_middle_stop(self): self.assertMultiLineEqual('ESXIEECSR', encode('EXERCISES', 4))
def test_encode_with_ending_in_the_middle(self): self.assertMultiLineEqual(encode('EXERCISES', 4), 'ESXIEECSR')
def test_encode_with_two_rails(self): self.assertMultiLineEqual(encode("XOXOXOXOXOXOXOXOXO", 2), "XXXXXXXXXOOOOOOOOO") self.assertMultiLineEqual(encode("FOOBARS", 2), "FOASOBR") self.assertMultiLineEqual(encode("FOO BAR S!", 2), "FOASOBR")
def test_encode_with_one_rail(self): self.assertEqual(encode('One rail, only one rail', 1), 'One rail, only one rail')
def test_encode_with_less_letters_than_rails(self): self.assertEqual(encode('More rails than letters', 24), 'More rails than letters')
def test_encode_with_ending_in_the_middle(self): self.assertMultiLineEqual(encode('EXERCISES', 4), 'ESXIEECSR') self.assertMultiLineEqual(encode('TOBEORNOTTOBE', 4), 'TNEOROBBOTOET')
def test_encode_with_ending_in_the_middle(self): self.assertMultiLineEqual(encode("EXERCISES", 4), "ESXIEECSR")
def test_encode_with_two_rails(self): self.assertMultiLineEqual(encode("XOXOXOXOXOXOXOXOXO", 2), "XXXXXXXXXOOOOOOOOO")
def test_encode_with_five_rails(self): self.assertMultiLineEqual(encode("FOOBARS", 5), "FOOSBRA") self.assertMultiLineEqual(encode("The Devil Is In The Details.", 5), "TIEHLSDTEIIEADVNHISETL")
def test_encode_with_three_rails(self): self.assertMultiLineEqual('WECRLTEERDSOEEFEAOCAIVDEN', encode('WEAREDISCOVEREDFLEEATONCE', 3))
def test_encode_with_six_rails(self): self.assertMultiLineEqual(encode("FOOBARS", 6), "FOOBASR")
def test_encode_with_two_rails(self): self.assertMultiLineEqual('XXXXXXXXXOOOOOOOOO', encode('XOXOXOXOXOXOXOXOXO', 2))
def test_encode_and_decode(self): value = "here is a message from the test case, GREAT!" self.assertEqual(value, decode(encode(value, 5), 5))