Files
python/exercises/transpose/transpose_test.py

232 lines
4.6 KiB
Python
Raw Normal View History

2017-04-08 15:59:35 +05:30
import unittest
from transpose import transpose
# Tests adapted from `problem-specifications//canonical-data.json` @ v1.1.0
2017-04-08 15:59:35 +05:30
2018-06-13 09:12:09 -04:00
class TransposeTest(unittest.TestCase):
2017-04-08 15:59:35 +05:30
def test_empty_string(self):
2019-05-31 18:29:43 +02:00
lines = []
expected = []
2017-04-08 15:59:35 +05:30
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
"\n".join(expected)
2017-04-08 15:59:35 +05:30
)
def test_two_characters_in_a_row(self):
2019-05-31 18:29:43 +02:00
lines = [
"A1"
]
expected = [
"A",
"1"
]
2017-04-08 15:59:35 +05:30
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
"\n".join(expected)
2017-04-08 15:59:35 +05:30
)
def test_two_characters_in_a_column(self):
2019-05-31 18:29:43 +02:00
lines = [
"A",
"1"
]
2019-05-31 18:29:43 +02:00
expected = [
"A1"
]
2017-04-08 15:59:35 +05:30
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
"\n".join(expected)
2017-04-08 15:59:35 +05:30
)
def test_simple(self):
2019-05-31 18:29:43 +02:00
lines = [
2017-04-08 15:59:35 +05:30
"ABC",
"123"
]
expected = [
"A1",
"B2",
"C3"
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
def test_single_line(self):
2019-05-31 18:29:43 +02:00
lines = ["Single line."]
2017-04-08 15:59:35 +05:30
expected = [
"S",
"i",
"n",
"g",
"l",
"e",
" ",
"l",
"i",
"n",
"e",
"."
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
def test_first_line_longer_than_second_line(self):
2019-05-31 18:29:43 +02:00
lines = [
2017-04-08 15:59:35 +05:30
"The fourth line.",
"The fifth line."
]
expected = [
"TT",
"hh",
"ee",
" ",
"ff",
"oi",
"uf",
"rt",
"th",
"h ",
" l",
"li",
"in",
"ne",
"e.",
"."
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
def test_second_line_longer_than_first_line(self):
2019-05-31 18:29:43 +02:00
lines = [
2017-04-08 15:59:35 +05:30
"The first line.",
"The second line."
]
expected = [
"TT",
"hh",
"ee",
" ",
"fs",
"ie",
"rc",
"so",
"tn",
" d",
"l ",
"il",
"ni",
"en",
".e",
" ."
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
"\n".join(expected)
)
def test_mixed_line_length(self):
lines = [
"The longest line.",
"A long line.",
"A longer line.",
"A line."
]
expected = [
"TAAA",
"h ",
"elll",
" ooi",
"lnnn",
"ogge",
"n e.",
"glr",
"ei ",
"snl",
"tei",
" .n",
"l e",
"i .",
"n",
"e",
"."
]
self.assertEqual(
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
def test_square(self):
2019-05-31 18:29:43 +02:00
lines = [
2017-04-08 15:59:35 +05:30
"HEART",
"EMBER",
"ABUSE",
"RESIN",
"TREND"
]
expected = [
"HEART",
"EMBER",
"ABUSE",
"RESIN",
"TREND"
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
def test_rectangle(self):
2019-05-31 18:29:43 +02:00
lines = [
2017-04-08 15:59:35 +05:30
"FRACTURE",
"OUTLINED",
"BLOOMING",
"SEPTETTE"
]
expected = [
"FOBS",
"RULE",
"ATOP",
"CLOT",
"TIME",
"UNIT",
"RENT",
"EDGE"
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
def test_triangle(self):
2019-05-31 18:29:43 +02:00
lines = [
2017-04-08 15:59:35 +05:30
"T",
"EE",
"AAA",
"SSSS",
"EEEEE",
"RRRRRR"
]
expected = [
"TEASER",
" EASER",
" ASER",
" SER",
" ER",
" R"
]
self.assertEqual(
2019-05-31 18:29:43 +02:00
transpose("\n".join(lines)),
2017-04-08 15:59:35 +05:30
"\n".join(expected)
)
if __name__ == '__main__':
unittest.main()