Skip to content

Commit ff94083

Browse files
authored
Merge pull request #134 from php-school/word-wrap-fix
Fix wordwrap
2 parents 525486e + 1dc8b08 commit ff94083

File tree

4 files changed

+49
-36
lines changed

4 files changed

+49
-36
lines changed

src/Util/StringUtil.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ public static function wordwrap(string $str, int $width, string $break = "\n") :
1818
$length += (mb_strlen($word) + 1);
1919

2020
if ($length > $width) {
21-
$length = mb_strlen($break);
22-
return sprintf('%s%s', $break, $word);
21+
$word = sprintf('%s%s', $break, $word);
22+
$length = mb_strlen($word);
23+
return $word;
2324
}
2425

2526
return $word;

test/MenuItem/MenuMenuItemTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ public function testGetRowsWithMultipleLines() : void
125125
$this->assertEquals(
126126
[
127127
" LONG ",
128-
" ITEM LINE"
128+
" ITEM ",
129+
" LINE"
129130
],
130131
$item->getRows($menuStyle)
131132
);

test/MenuItem/SelectableItemTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ public function testGetRowsWithMultipleLinesWithItemExtra() : void
139139
$this->assertEquals(
140140
[
141141
" LONG [EXTRA]",
142-
" ITEM LINE"
142+
" ITEM ",
143+
" LINE"
143144
],
144145
$item->getRows($menuStyle)
145146
);

test/Util/StringUtilTest.php

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,30 @@ class StringUtilTest extends TestCase
1212
{
1313
protected $dummyText;
1414

15+
protected function setup() : void
16+
{
17+
parent::setUp();
18+
19+
$this->dummyText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor ' .
20+
'incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud ' .
21+
'exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor ' .
22+
'in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. ' .
23+
'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt ' .
24+
'mollit anim id est laborum';
25+
}
26+
1527
public function testItWrapsAsExpectedTo80Length() : void
1628
{
1729

1830
$result = StringUtil::wordwrap($this->dummyText, 80);
1931
$expected = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor \n" .
20-
"incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud \n" .
21-
"exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor \n" .
22-
"in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. \n" .
23-
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt \n" .
24-
"mollit anim id est laborum";
32+
"incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis \n" .
33+
"nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. \n" .
34+
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu \n" .
35+
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in \n" .
36+
"culpa qui officia deserunt mollit anim id est laborum";
2537

26-
$this->assertEquals($result, $expected);
38+
self::assertEquals($expected, $result);
2739
}
2840

2941
public function testItWrapsAsExpectedTo60Length() : void
@@ -32,30 +44,30 @@ public function testItWrapsAsExpectedTo60Length() : void
3244
$result = StringUtil::wordwrap($this->dummyText, 60);
3345
$expected = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, \n" .
3446
"sed do eiusmod tempor incididunt ut labore et dolore magna \n" .
35-
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco \n" .
36-
"laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure \n" .
37-
"dolor in reprehenderit in voluptate velit esse cillum dolore eu \n" .
38-
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non \n" .
39-
"proident, sunt in culpa qui officia deserunt mollit anim id est \n" .
40-
"laborum";
41-
42-
$this->assertEquals($result, $expected);
47+
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation \n" .
48+
"ullamco laboris nisi ut aliquip ex ea commodo consequat. \n" .
49+
"Duis aute irure dolor in reprehenderit in voluptate velit \n" .
50+
"esse cillum dolore eu fugiat nulla pariatur. Excepteur sint \n" .
51+
"occaecat cupidatat non proident, sunt in culpa qui officia \n" .
52+
"deserunt mollit anim id est laborum";
53+
54+
self::assertEquals($expected, $result);
4355
}
4456

4557
public function testItCanUseACustomBreakCharacter() : void
4658
{
47-
4859
$result = StringUtil::wordwrap($this->dummyText, 60, 'H');
60+
4961
$expected = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, H" .
5062
"sed do eiusmod tempor incididunt ut labore et dolore magna H" .
51-
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco H" .
52-
"laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure H" .
53-
"dolor in reprehenderit in voluptate velit esse cillum dolore eu H" .
54-
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non H" .
55-
"proident, sunt in culpa qui officia deserunt mollit anim id est H" .
56-
"laborum";
57-
58-
$this->assertEquals($result, $expected);
63+
"aliqua. Ut enim ad minim veniam, quis nostrud exercitation H" .
64+
"ullamco laboris nisi ut aliquip ex ea commodo consequat. H" .
65+
"Duis aute irure dolor in reprehenderit in voluptate velit H" .
66+
"esse cillum dolore eu fugiat nulla pariatur. Excepteur sint H" .
67+
"occaecat cupidatat non proident, sunt in culpa qui officia H" .
68+
"deserunt mollit anim id est laborum";
69+
70+
self::assertEquals($expected, $result);
5971
}
6072

6173
public function testItCanStripAnsiEscapeSequence() : void
@@ -70,15 +82,13 @@ public function testItCanStripAnsiEscapeSequence() : void
7082
$this->assertEquals('foobarbaz!!!', $result);
7183
}
7284

73-
protected function setup() : void
85+
public function testSplitItemBug() : void
7486
{
75-
parent::setUp();
76-
77-
$this->dummyText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor ' .
78-
'incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud ' .
79-
'exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor ' .
80-
'in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. ' .
81-
'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt ' .
82-
'mollit anim id est laborum';
87+
$test = 'item three I guess it isn\'t that bad, is it ?';
88+
89+
self::assertEquals(
90+
"item three \nI guess it \nisn't that \nbad, is it \n?",
91+
StringUtil::wordwrap($test, 11)
92+
);
8393
}
8494
}

0 commit comments

Comments
 (0)