Last active
January 22, 2022 18:32
-
-
Save amomchilov/41a5b8b8e0aa5980273d1a84b77b1c66 to your computer and use it in GitHub Desktop.
Unit tests for https://stackoverflow.com/q/70752266/3141234
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def letterPattern(size): | |
# TODO: your code goes here | |
result = "" | |
for i in range(size): | |
p = 65 | |
for j in range(i, size): | |
result += chr(p) | |
p += 1 | |
result += "\n" | |
return result | |
def main(): | |
print("What size of pattern would you like?") | |
size = int(input()) | |
pattern = letterPattern(size) | |
print(pattern) | |
import sys | |
import unittest | |
import inspect | |
class TestLetterPattern(unittest.TestCase): | |
def test_input_0(self): | |
self.assertEqual(letterPattern(0), "") | |
def test_input_1(self): | |
self.assertEqual(letterPattern(1), "AA") | |
def test_input_2(self): | |
expected = inspect.cleandoc("""\ | |
ABBA | |
A A | |
""") | |
self.assertEqual(letterPattern(2), expected) | |
def test_input_3(self): | |
expected = inspect.cleandoc("""\ | |
ABCCBA | |
AB BA | |
A A | |
""") | |
self.assertEqual(letterPattern(3), expected) | |
def test_input_4(self): | |
expected = inspect.cleandoc("""\ | |
ABCDDCBA | |
ABC CBA | |
AB BA | |
A A | |
""") | |
self.assertEqual(letterPattern(4), expected) | |
def test_input_7(self): | |
expected = inspect.cleandoc("""\ | |
ABCDEFGGFEDCBA | |
ABCDEF FEDCBA | |
ABCDE EDCBA | |
ABCD DCBA | |
ABC CBA | |
AB BA | |
A A | |
""") | |
self.assertEqual(letterPattern(7), expected) | |
def test_input_26(self): | |
expected = inspect.cleandoc("""\ | |
ABCDEFGHIJKLMNOPQRSTUVWXYZZYXWVUTSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRSTUVWXY YXWVUTSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRSTUVWX XWVUTSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRSTUVW WVUTSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRSTUV VUTSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRSTU UTSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRST TSRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQRS SRQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQR RQPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOPQ QPONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNOP PONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMNO ONMLKJIHGFEDCBA | |
ABCDEFGHIJKLMN NMLKJIHGFEDCBA | |
ABCDEFGHIJKLM MLKJIHGFEDCBA | |
ABCDEFGHIJKL LKJIHGFEDCBA | |
ABCDEFGHIJK KJIHGFEDCBA | |
ABCDEFGHIJ JIHGFEDCBA | |
ABCDEFGHI IHGFEDCBA | |
ABCDEFGH HGFEDCBA | |
ABCDEFG GFEDCBA | |
ABCDEF FEDCBA | |
ABCDE EDCBA | |
ABCD DCBA | |
ABC CBA | |
AB BA | |
A A | |
""") | |
self.assertEqual(letterPattern(26), expected) | |
if __name__ == '__main__': | |
if len(sys.argv) == 2 and sys.argv[1] == "--test": | |
argv_for_unit_test = sys.argv.copy() | |
argv_for_unit_test.pop(1) # Remove the "--test" flag | |
unittest.main(argv = argv_for_unit_test) | |
else: | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When you call this like
python3 letter_pattern.py
, it will prompt you for the size of the pattern you want interactively.If you instead run it with
python3 letter_pattern.py --test
, it will automatically test the patterns of size 0, 1, 2, 3, 4, 7 and 26.