Source code for kyu_3.rail_fence_cipher_encoding_and_decoding.test_encoding

"""
Testing Encoding functionality.

Created by Egor Kostan.
GitHub: https://github.com/ikostan
"""

# ALGORITHMS CIPHERS CRYPTOGRAPHY SECURITY STRINGS

import unittest
from parameterized import parameterized
import allure
from utils.log_func import print_log
from kyu_3.rail_fence_cipher_encoding_and_decoding.encoding_and_decoding \
    import encode_rail_fence_cipher


# pylint: disable-msg=R0801
[docs] @allure.epic('3 kyu') @allure.parent_suite('Competent') @allure.suite("Algorithms") @allure.sub_suite("Unit Tests") @allure.feature("String") @allure.story('Rail Fence Cipher: Encoding and Decoding') @allure.tag('ALGORITHMS', 'CIPHERS', 'CRYPTOGRAPHY', 'SECURITY', 'STRINGS') @allure.link( url='https://www.codewars.com/kata/58c5577d61aefcf3ff000081', name='Source/Kata') # pylint: enable-msg=R0801 class EncodingTestCase(unittest.TestCase): """Testing Encoding functionality.""" @parameterized.expand([ # edge case: n equals length of the string ("WEAREDISCOVEREDFLEEATONCE", 25, "WEAREDISCOVEREDFLEEATONCE"), ("WEAREDISCOVEREDFLEEATONCE", 3, "WECRLTEERDSOEEFEAOCAIVDEN"), ("Hello, World!", 3, "Hoo!el,Wrdl l"), ("Hello, World!", 4, "H !e,Wdloollr"), ("", 3, ""), ('WEAREDISCOVEREDFLEEATONCE', 4, 'WIREEEDSEEEACAECVDLTNROFO'), ('WEAREDISCOVEREDFLEEATONCE', 6, 'WVTEOEAOACRENRSEECEIDLEDF'), ('WEAREDISCOVEREDFLEEATONCE', 10, 'WEEEAALTRFOEDNDECIRESECVO'), ("WEAREDISCOVEREDFLEEATONCE", 5, 'WCLEESOFECAIVDENRDEEAOERT')]) def test_encoding(self, string, n, expected): """Testing Encoding functionality.""" # pylint: disable-msg=R0801 allure.dynamic.title("Testing Encoding functionality") allure.dynamic.severity(allure.severity_level.NORMAL) allure.dynamic.description_html( '<h3>Codewars badge:</h3>' '<img src="https://www.codewars.com/users/myFirstCode' '/badges/large">' '<h3>Test Description:</h3>' "<p>Verify cipher function. This \"encode\" is used to encode " "a string by placing each character successively in a " "diagonal along a set of \"rails\". </p>") # pylint: enable-msg=R0801 actual_result: str = encode_rail_fence_cipher(string, n) print_log(string=string, n=n, expected=expected, actual_result=actual_result) with allure.step("Enter a test string and compare \ the output vs expected result"): self.assertEqual(expected, actual_result)