File: MultiByteWordWrapTest.php

package info (click to toggle)
php-laravel-prompts 0.1.25-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 712 kB
  • sloc: php: 5,928; xml: 14; makefile: 8
file content (199 lines) | stat: -rw-r--r-- 6,290 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<?php

use Laravel\Prompts\Concerns\Truncation;

$instance = new class
{
    use Truncation;

    public function wordwrap(...$args)
    {
        return $this->mbWordwrap(...$args);
    }
};

test('will match wordwrap', function () use ($instance) {
    $str = "This is a story all about how my life got flipped turned upside down and I'd like to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $result = wordwrap($str);

    $mbResult = $instance->wordwrap($str);

    expect($mbResult)->toBe($result);
});

test('will match wordwrap on shorter strings', function () use ($instance) {
    $str = "This is a story all\nabout how my life got\nflipped turned upside down and I'd like to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $result = wordwrap($str);

    $mbResult = $instance->wordwrap($str);

    expect($mbResult)->toBe($result);
});

test('will match wordwrap on blank lines strings', function () use ($instance) {
    $str = "This is a story all about how my life got flipped turned upside down and I'd\n\nlike to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $result = wordwrap($str);

    $mbResult = $instance->wordwrap($str);

    expect($mbResult)->toBe($result);
});

test('will match wordwrap with cut long words enabled', function () use ($instance) {
    $str = "This is a story all about how my life got flippppppppppppppppppppppppped turned upside down and I'd like to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $result = wordwrap($str, 25, "\n", true);

    $mbResult = $instance->wordwrap($str, 25, "\n", true);

    expect($mbResult)->toBe($result);
});

test('will match wordwrap with random multiple spaces', function () use ($instance) {
    $str = "     This is a story all about how my life got flipped turned upside down and      I'd      like to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $result = wordwrap($str, 25, "\n", true);

    $mbResult = $instance->wordwrap($str, 25, "\n", true);

    expect($mbResult)->toBe($result);
});

test('will match wordwrap with cut long words disabled', function () use ($instance) {
    $str = "This is a story all about how my life got flippppppppppppppppppppppppped turned upside down and I'd like to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $result = wordwrap($str, 25, "\n", false);

    $mbResult = $instance->wordwrap($str, 25, "\n", false);

    expect($mbResult)->toBe($result);
});

test('will wrap strings with multi-byte characters', function () use ($instance) {
    $str = "This is a story all about how my life got flippêd turnêd upsidê down and I'd likê to takê a minutê just sit right thêrê I'll têll you how I bêcamê thê princê of a town callêd Bêl-Air";

    $mbResult = $instance->wordwrap($str, 18, "\n", false);

    $expectedResult = <<<'RESULT'
    This is a story
    all about how my
    life got flippêd
    turnêd upsidê down
    and I'd likê to
    takê a minutê just
    sit right thêrê
    I'll têll you how
    I bêcamê thê
    princê of a town
    callêd Bêl-Air
    RESULT;

    expect($mbResult)->toBe($expectedResult);
});

test('will wrap strings with emojis', function () use ($instance) {
    $str = "This is a 📖 all about how my life got 🌀 turned upside ⬇️ and I'd like to take a minute just sit right there I'll tell you how I became the prince of a town called Bel-Air";

    $mbResult = $instance->wordwrap($str, 13, "\n", false);

    $expectedResult = <<<'RESULT'
    This is a 📖
    all about how
    my life got
    🌀 turned
    upside ⬇️ and
    I'd like to
    take a minute
    just sit
    right there
    I'll tell you
    how I became
    the prince of
    a town called
    Bel-Air
    RESULT;

    expect($mbResult)->toBe($expectedResult);
});

test('will wrap strings with emojis and multi-byte characters', function () use ($instance) {
    $str = "This is a 📖 all about how my lifê got 🌀 turnêd upsidê ⬇️ and I'd likê to takê a minutê just sit right thêrê I'll têll you how I bêcamê thê princê of a town callêd Bêl-Air";

    $mbResult = $instance->wordwrap($str, 11, "\n", false);

    $expectedResult = <<<'RESULT'
    This is a
    📖 all
    about how
    my lifê got
    🌀 turnêd
    upsidê ⬇️
    and I'd
    likê to
    takê a
    minutê just
    sit right
    thêrê I'll
    têll you
    how I
    bêcamê thê
    princê of a
    town callêd
    Bêl-Air
    RESULT;

    expect($mbResult)->toBe($expectedResult);
});

test('will wrap strings with combined emojis', function () use ($instance) {
    $str = "This is a 📖 all about how my life got 🌀 turned upside ⬇️ and I'd like to take a minute just sit right there I'll tell you how I became the prince of a 👨‍👩‍👧‍👦 called Bel-Air";

    $mbResult = $instance->wordwrap($str, 13, "\n", false);

    $expectedResult = <<<'RESULT'
    This is a 📖
    all about how
    my life got
    🌀 turned
    upside ⬇️ and
    I'd like to
    take a minute
    just sit
    right there
    I'll tell you
    how I became
    the prince of
    a 👨‍👩‍👧‍👦 called
    Bel-Air
    RESULT;

    expect($mbResult)->toBe($expectedResult);
});

test('will handle long strings with multi-byte characters and emojis with cut long words enabled', function () use ($instance) {
    $str = "This is a 📖 all about how my life got 🌀 turned upside ⬇️ and I'd like to take a minute just sit right there I'll tell you how I became the prince of a 👨‍👩‍👧‍👦 called Bel-Air";

    $mbResult = $instance->wordwrap($str, 13, "\n", false);

    $expectedResult = <<<'RESULT'
    This is a 📖
    all about how
    my life got
    🌀 turned
    upside ⬇️ and
    I'd like to
    take a minute
    just sit
    right there
    I'll tell you
    how I became
    the prince of
    a 👨‍👩‍👧‍👦 called
    Bel-Air
    RESULT;

    expect($mbResult)->toBe($expectedResult);
});