|
| 1 | +unit TestCases; |
| 2 | + |
| 3 | +{$mode ObjFPC}{$H+} |
| 4 | + |
| 5 | +interface |
| 6 | + |
| 7 | +uses Classes, SysUtils, FPCUnit, TestRegistry, FPCUnitTestUtils; |
| 8 | + |
| 9 | +type |
| 10 | + TransposeTest = class(TTestCase) |
| 11 | + published |
| 12 | + procedure empty_string; |
| 13 | + procedure two_characters_in_a_row; |
| 14 | + procedure two_characters_in_a_column; |
| 15 | + procedure simple; |
| 16 | + procedure single_line; |
| 17 | + procedure first_line_longer_than_second_line; |
| 18 | + procedure second_line_longer_than_first_line; |
| 19 | + procedure mixed_line_length; |
| 20 | + procedure square; |
| 21 | + procedure rectangle; |
| 22 | + procedure triangle; |
| 23 | + procedure jagged_triangle; |
| 24 | + end; |
| 25 | + |
| 26 | +implementation |
| 27 | + |
| 28 | +uses Transpose; |
| 29 | + |
| 30 | +// 404b7262-c050-4df0-a2a2-0cb06cd6a821 |
| 31 | +procedure TransposeTest.empty_string; |
| 32 | +const |
| 33 | + lines : TStrArray = (); |
| 34 | + expect : TStrArray = (); |
| 35 | +begin |
| 36 | + TapAssertTrue(Self, 'empty string', expect, Transpose.transpose(lines)); |
| 37 | +end; |
| 38 | + |
| 39 | +// a89ce8a3-c940-4703-a688-3ea39412fbcb |
| 40 | +procedure TransposeTest.two_characters_in_a_row; |
| 41 | +const |
| 42 | + lines : TStrArray = ('A1'); |
| 43 | + expect : TStrArray = ('A', '1'); |
| 44 | +begin |
| 45 | + TapAssertTrue(Self, 'two characters in a row', expect, Transpose.transpose(lines)); |
| 46 | +end; |
| 47 | + |
| 48 | +// 855bb6ae-4180-457c-abd0-ce489803ce98 |
| 49 | +procedure TransposeTest.two_characters_in_a_column; |
| 50 | +const |
| 51 | + lines : TStrArray = ('A', '1'); |
| 52 | + expect : TStrArray = ('A1'); |
| 53 | +begin |
| 54 | + TapAssertTrue(Self, 'two characters in a column', expect, Transpose.transpose(lines)); |
| 55 | +end; |
| 56 | + |
| 57 | +// 5ceda1c0-f940-441c-a244-0ced197769c8 |
| 58 | +procedure TransposeTest.simple; |
| 59 | +const |
| 60 | + lines : TStrArray = ('ABC', '123'); |
| 61 | + expect : TStrArray = ('A1', 'B2', 'C3'); |
| 62 | +begin |
| 63 | + TapAssertTrue(Self, 'simple', expect, Transpose.transpose(lines)); |
| 64 | +end; |
| 65 | + |
| 66 | +// a54675dd-ae7d-4a58-a9c4-0c20e99a7c1f |
| 67 | +procedure TransposeTest.single_line; |
| 68 | +const |
| 69 | + lines : TStrArray = ('Single line.'); |
| 70 | + expect : TStrArray = ('S', 'i', 'n', 'g', 'l', 'e', ' ', 'l', 'i', 'n', 'e', '.'); |
| 71 | +begin |
| 72 | + TapAssertTrue(Self, 'single line', expect, Transpose.transpose(lines)); |
| 73 | +end; |
| 74 | + |
| 75 | +// 0dc2ec0b-549d-4047-aeeb-8029fec8d5c5 |
| 76 | +procedure TransposeTest.first_line_longer_than_second_line; |
| 77 | +const |
| 78 | + lines : TStrArray = ('The fourth line.', 'The fifth line.'); |
| 79 | + expect : TStrArray = ('TT', 'hh', 'ee', ' ', 'ff', 'oi', 'uf', 'rt', 'th', 'h ', ' l', 'li', 'in', 'ne', 'e.', '.'); |
| 80 | +begin |
| 81 | + TapAssertTrue(Self, 'first line longer than second line', expect, Transpose.transpose(lines)); |
| 82 | +end; |
| 83 | + |
| 84 | +// 984e2ec3-b3d3-4b53-8bd6-96f5ef404102 |
| 85 | +procedure TransposeTest.second_line_longer_than_first_line; |
| 86 | +const |
| 87 | + lines : TStrArray = ('The first line.', 'The second line.'); |
| 88 | + expect : TStrArray = ('TT', 'hh', 'ee', ' ', 'fs', 'ie', 'rc', 'so', 'tn', ' d', 'l ', 'il', 'ni', 'en', '.e', ' .'); |
| 89 | +begin |
| 90 | + TapAssertTrue(Self, 'second line longer than first line', expect, Transpose.transpose(lines)); |
| 91 | +end; |
| 92 | + |
| 93 | +// eccd3784-45f0-4a3f-865a-360cb323d314 |
| 94 | +procedure TransposeTest.mixed_line_length; |
| 95 | +const |
| 96 | + lines : TStrArray = ('The longest line.', 'A long line.', 'A longer line.', 'A line.'); |
| 97 | + expect : TStrArray = ('TAAA', 'h ', 'elll', ' ooi', 'lnnn', 'ogge', 'n e.', 'glr', 'ei ', 'snl', 'tei', ' .n', 'l e', 'i .', 'n', 'e', '.'); |
| 98 | +begin |
| 99 | + TapAssertTrue(Self, 'mixed line length', expect, Transpose.transpose(lines)); |
| 100 | +end; |
| 101 | + |
| 102 | +// 85b96b3f-d00c-4f80-8ca2-c8a5c9216c2d |
| 103 | +procedure TransposeTest.square; |
| 104 | +const |
| 105 | + lines : TStrArray = ('HEART', 'EMBER', 'ABUSE', 'RESIN', 'TREND'); |
| 106 | + expect : TStrArray = ('HEART', 'EMBER', 'ABUSE', 'RESIN', 'TREND'); |
| 107 | +begin |
| 108 | + TapAssertTrue(Self, 'square', expect, Transpose.transpose(lines)); |
| 109 | +end; |
| 110 | + |
| 111 | +// b9257625-7a53-4748-8863-e08e9d27071d |
| 112 | +procedure TransposeTest.rectangle; |
| 113 | +const |
| 114 | + lines : TStrArray = ('FRACTURE', 'OUTLINED', 'BLOOMING', 'SEPTETTE'); |
| 115 | + expect : TStrArray = ('FOBS', 'RULE', 'ATOP', 'CLOT', 'TIME', 'UNIT', 'RENT', 'EDGE'); |
| 116 | +begin |
| 117 | + TapAssertTrue(Self, 'rectangle', expect, Transpose.transpose(lines)); |
| 118 | +end; |
| 119 | + |
| 120 | +// b80badc9-057e-4543-bd07-ce1296a1ea2c |
| 121 | +procedure TransposeTest.triangle; |
| 122 | +const |
| 123 | + lines : TStrArray = ('T', 'EE', 'AAA', 'SSSS', 'EEEEE', 'RRRRRR'); |
| 124 | + expect : TStrArray = ('TEASER', ' EASER', ' ASER', ' SER', ' ER', ' R'); |
| 125 | +begin |
| 126 | + TapAssertTrue(Self, 'triangle', expect, Transpose.transpose(lines)); |
| 127 | +end; |
| 128 | + |
| 129 | +// 76acfd50-5596-4d05-89f1-5116328a7dd9 |
| 130 | +procedure TransposeTest.jagged_triangle; |
| 131 | +const |
| 132 | + lines : TStrArray = ('11', '2', '3333', '444', '555555', '66666'); |
| 133 | + expect : TStrArray = ('123456', '1 3456', ' 3456', ' 3 56', ' 56', ' 5'); |
| 134 | +begin |
| 135 | + TapAssertTrue(Self, 'jagged triangle', expect, Transpose.transpose(lines)); |
| 136 | +end; |
| 137 | + |
| 138 | +initialization |
| 139 | +RegisterTest(TransposeTest); |
| 140 | + |
| 141 | +end. |
0 commit comments