Source code for kyu_6.string_subpattern_recognition_3.test_has_subpattern

#  Created by Egor Kostan.
#  GitHub: https://github.com/ikostan
#  LinkedIn: https://www.linkedin.com/in/egor-kostan/

# FUNDAMENTALS STRINGS REGULAR EXPRESSIONS DECLARATIVE PROGRAMMING ADVANCED LANGUAGE FEATURES

import allure
import unittest
from utils.log_func import print_log
from kyu_6.string_subpattern_recognition_3.has_subpattern import has_subpattern


[docs]@allure.epic('6 kyu') @allure.parent_suite('Novice') @allure.suite("Advanced Language Features") @allure.sub_suite("Unit Tests") @allure.feature("String") @allure.story('String subpattern recognition III') @allure.tag('FUNDAMENTALS', 'STRINGS', 'REGULAR EXPRESSIONS', 'DECLARATIVE PROGRAMMING', 'ADVANCED LANGUAGE FEATURES') @allure.link(url='https://www.codewars.com/kata/' '5a4a2973d8e14586c700000a/train/python', name='Source/Kata') class HasSubpatternTestCase(unittest.TestCase): """ Testing 'has_subpattern' function """
[docs] def test_has_subpattern(self): """ Verify that 'has_subpattern' function Return a subpattern with sorted characters, otherwise return the base string with sorted characters (you might consider this case as an edge case, with the subpattern being repeated only once and thus equalling the original input string). :return: """ allure.dynamic.title("Testing 'has_subpattern' (part 3) function") 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></p>") with allure.step("Pass the string and verify the output"): data_set = [ ('sZZpCWRNzSfvfZy5CMsRbdHeb85L3DmMB7dLMIM33pylSW6hHXp' 'dthSmvynxF7cSUtSVShx8vwSYaa7dg4jyCzHzJqnYHRGD0sTg5z' 'XOB42f9fuo47NhwV7fVZkzCyIfVzUvb90M5FOx3xXPo3fqFOqZk' 'rH5HZ59juv3SWPIJKG7VfWh1R6O3S42by54D0W5rHYtxTjLsP3I' 'PkR5WhsFNbYXMZwfIfcovPKfWzqD0ZTDWDdfMLkTyncVL3fODk9' '5V3Jz6p0jRsCv8ahOky6BLgffzBfb9SMnq3spM8q9wVZbaLWPVk' 'ywWNypYC3MnCyQKxVd6Mvo1fq2I26uajR5aXMrrKX4MdyhfQfza' 'rK5Pm2nb8IMs8zgNKMDrwKfcD553Os8OZs5eHYyn415Zvy0RCd3' 'FyjFa3DGJs7IhSqnlvVJZYaKiFV45dtxkMsh2m5C2vvz2fyt24C' 'raMULMxJwjYMuGM7Cz65hdWJaNcWCjyguWMqrdMO02Nf8RInK7G' 'MVf2CWrR4RXiSv6yD29XBhIOkT5Cm7TfX8ZFk5FP4sKcWqHZGst' 'DdM0ZHkyNFjQWJZCFQe5h5rguha8COIZVdcH7x4oMRRWXJwTn5o' 'zzR8jYS54fFSwfoCgMkxXBhSjMWyk3PWnRW3vvkYW39vSjMo4bz' 'jdJD1Dq1j3gs5WavPxNfjC0j63Ca6pHt44D5MFCgXaC1rz346wH' 'ldbf89huLqOXg4WqByOW9SR8xXng9xC4CajsOC5HS2jzYuMdUXv' 'jPZuIfgusZDZbReZCJ2fn4mapgL6z0FS94S3HuMwIGwnyyafxQ8' '84Y0T6kFFMcCknMcZ4uxowP7jzyWNO6SdPxZLZNqYC2roWSZxGN' 'rFKwzfVPZOxPyzzktkW8fQyyv9zCSzgbd3kCvzYFxmrR5CMLiq8' 'xz8cxWDCYWPN1WLNYsngLrCcdop0XDDgQXfXpZyRV56lZsRLZoa' '6WfCap9B3wNx2k4Z1Cwr5NL8IMCpWmKSsxiQ9MHZ9c5fC8dZJFz' 'DxXXqIFI', '000112222333333444444555555556666777888889999BBCCCC' 'CCCCCDDDDDFFFFFGGHHHHIIIIJJJKKKLLLLMMMMMMMMMNNNNOOO' 'OPPPPQQRRRRRSSSSSSTTUVVVVWWWWWWWWXXXXXYYYYZZZZZZZZa' 'aaaabbbcccdddddefffffffffgggghhhhijjjjjkkkkklmmnnnn' 'ooopppqqqqrrrrsssssttuuuvvvvvwwwwxxxxxxyyyyyyyzzzzzzz'), ('lcGPumgkSKgXDCAOuYEFfE2oDFCRrMzGoYupyfrDA3UxGGgnlix' 'KobXYNrRlMRIYnq1imYuIyoIrakSmCKq7XDRcDWcmXPuRl67MGi' 'q2g8CJUu0hfuXomi1OGUMIu6mpuJXfUPDzv7q0zN8zhlxoc7arm' 'RmuxvfP3WrfbrrKlY', '01236778ACCDDDEFGGGIIJKKMMNOPPRRRSUUWXXXYYYabccfffgg' 'hiiklllmmmmnooopqqrrrruuuuuvxxyzz'), ('00000000000000000000000011111111111111111111111111' '2222222222222222222222333333333333333333333333' '4444444444444444444444444444444444555555555555555555' '66666666666666666677777777777777777777777788888888888888888888' '9999999999999999999999AAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBB' 'CCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFF' 'GGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIII' 'JJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLL' 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN' 'OOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ' 'RRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTT' 'UUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXX' 'YYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZaaaaaaaaaaaaaaaaaaaaaa' 'bbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccdddddddddddddddddddddddddddddddddddd' 'eeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffgggggggggggggggggggg' 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiijjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkk' 'llllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnn' 'ooooooooooooooooooooooooooooooooooooooppppppppppppppppppppqqqqqqqqqqqqqqqqqqqq' 'rrrrrrrrrrrrrrrrrrrrrrrrrrsssssssssssssssssssssssstttttttttttttttttttttttt' 'uuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 'yyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzz', '00000000000011111111111112222222222233333333333344444444444444444555555555666666666' '777777777777888888888899999999999AAAAAAAAAAABBBBBBBBBBBCCCCCCCCDDDDDDDDDDEEEEEEEEEEFFFFFFFFFF' 'GGGGGGGGGGGHHHHHHHHHHHHHIIIIIIIIIIIJJJJJJJJJJJKKKKKKKKKLLLLLLLLLLLMMMMMMMMMMMMMMMNNNNNNNNNNNNNNN' 'OOOOOOOOOOOPPPPPPPPPPQQQQQQQQQQQQQQQQQQRRRRRRRRSSSSSSSSSSSSSTTTTTTTTTTTTTTUUUUUUUUVVVVVVVVV' 'WWWWWWWWWWWXXXXXXXXXXXYYYYYYYYZZZZZZZZZZZZZZZZZaaaaaaaaaaabbbbbbbbbccccccccccccc' 'ddddddddddddddddddeeeeeeeeeeefffffffffffffgggggggggghhhhhhhhhhhhhhiiiiiiijjjjjjjkkkkkkkkkkk' 'lllllllmmmmmmmmmmmmmmnnnnnnnnnnoooooooooooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrrrr' 'ssssssssssssttttttttttttuuuuuuuuuvvvvvvvvvwwwwwwwwwxxxxxxxxxxxxxxxxxyyyyyyyyyyyyzzzzzzzzzzzz'), ("a", "a"), ("aaaa", "a"), ("abcd", "abcd"), ("babababababababa", "ab"), ("bbabbaaabbaaaabb", "ab"), ("123a123a123a", "123a"), ("123A123a123a", "111222333Aaa"), ("12aa13a21233", "123a"), ("12aa13a21233A", "111222333Aaaa"), ("abcdabcaccd", "aaabbccccdd"), ('49OTbVT2Hu8EFdYrbYhCQ2hCFpOwq3bpzVuopQ1O4QTTby83J5k' 'vbVHw1T4OpuQyK1bnXU8azTyqumEGvQaFb8nEHY35yr0dOy1b49' 'pApQXmUF8YIUkrboEI8ovHOYHVGKdgbH3odYAsgyhUr0vYsYJh', '0112334458889ACEEFFGHHHIJKOOOQQQTTTUUVVXYYYYabbbbb' 'ddghhkmnoopppqrrsuuvvwyyyz'), ('mTcL4El8ONERf60xgTmZcywggRHxmLyTxEtly6RhOLsRfXsdy0c' 'iOXRtljgZYfX43ZE20gLRJfROmw3Yd08sLFyXcJ0R2ccRgHg3s2' 'xygcHYy3ih4Jclye9igFLeixhwYfT2EN4sEdLLsiLx4HXyE49Om' 'L3f6hyHwLETYe4MHXt2t2RLj0lcM2Mcs43J4f2004gicEEwjNLY' 'gEJE0T3Eh8LRL23RRdcyixH2FTwJgiOlgM34EXZJLfcg26lLLtg' '6mtegHFymFE42hcFR2gi26JRFJ90jsM9xmEj3TZx24diRmhlgZH' 'gXHYjgdFxEdO2tetREe6EmL36y4fi42ORwYf4m8clET3ics2469' 'NgMm3OMgTLTLw0gjELcLcxt893H9s4NZZgef2Ys4iJcFtd2w9iw' 'Fmte9Ml433MhjEFx2e2gyJig6gMOLjXYf2HY6gHNT0YggNxMLLg' 'fiwc4Nt0406tiiH0wtgm0yLgg44J4NLZXYitg02Jh8Rdf80602X' 'FNi0NimsMYTcHxj8Xlgmxx4sYeLhdOMh440hfRcElgt0hgceZ2l' 'FTw2YMXcsw4NhJfgJgEfFH2F60EZ3geHc6y04Mt29l0cfRLiggi' 'LhedOs0wlXfgtR8fRY2RT4wdl4F93xHggXOEyyJ4xMRtc0gREiL' 'ZMsE2L0MeMwTRTRlNYFTH3iJtmlyjg0gOO2jc2Ei204w2iidFLZ' 'sXHLX4j6iEeic6i0RZc0ix4wLcdds2JgRZgNOYh2Emg08XdlgNl' 'iMN0EH0JLFigcelmgOcN6jEeiLjR9688Fcjw0fd9EZ9ER8899E8' 'EEiJYhmJf99TZZZLLM0dTgxEZcmTlNXJH494sO2i6cOiYYg9thN' 'Rg3iXRijggiYRdhjdcc9c60cgiyje32wOLRLd89dFsg40eRRd4F' 'yte9H0c8hOcsjLNyX0wMcch8L228E4e0i4Xf3cgRZmZj08j8ggg' 'xsX0gNRs24OLRwEE2lOM3hL0TZEEFh2c4i0N68xRR4iRTe2m2tj' 'N48JeERERix6gyg', '0022344689EEFHJLLMNORRTXYZccdefggghiijlmstwxy'), ] for data in data_set: result = has_subpattern(data[0]) expected = data[1] print('\n---------------------------------------------------------------\n') print_log(result=result, expected=expected) self.assertEqual(expected, result)