1<?php
2/**
3 * @CreateTime:   2019/9/14 下午10:41
4 * @Author:       huizhang  <tuzisir@163.com>
5 * @Copyright:    copyright(2019) Easyswoole all rights reserved
6 * @Description:  SplString 单元测试
7 */
8namespace EasySwoole\Spl\Test;
9
10use EasySwoole\Spl\SplString;
11use PHPUnit\Framework\TestCase;
12
13class StringTest extends TestCase {
14
15    public function testSetString() {
16        $splString = new SplString();
17        $splString->setString('Easyswoole');
18        $this->assertEquals('Easyswoole', $splString->__toString());
19    }
20
21    public function testSplit() {
22        $splString = new SplString('Hello, Easyswoole');
23        $this->assertEquals([
24            'Hello', ', Eas', 'yswoo', 'le'
25        ], $splString->split(5)->getArrayCopy());
26    }
27
28    public function testExplode() {
29        $splString = new SplString('Hello, Easyswoole');
30        $this->assertEquals([
31            'Hello', 'Easyswoole'
32        ], $splString->explode(', ')->getArrayCopy());
33    }
34
35    public function testSubString() {
36        $splString = new SplString('Hello, Easyswoole');
37        $this->assertEquals('Hello', $splString->subString(0, 5)->__toString());
38    }
39
40    public function testEncodingConvert() {
41        $splString = new SplString('Hello, Easyswoole');
42        $this->assertEquals('Hello, Easyswoole', $splString->encodingConvert('UTF-8')->__toString());
43    }
44
45    public function testUtf8() {
46        $splString = new SplString('Hello, Easyswoole');
47        $this->assertEquals('Hello, Easyswoole', $splString->utf8()->__toString());
48    }
49
50    public function testUnicodeToUtf8() {
51        $splString = new SplString('Hello, Easyswoole');
52        $this->assertEquals('Hello, Easyswoole', $splString->unicodeToUtf8()->__toString());
53    }
54
55    public function testToUnicode() {
56        $splString = new SplString('Hello, Easyswoole');
57        $this->assertEquals('\U0048\U0065\U006C\U006C\U006F\U002C\U0020\U0045\U0061\U0073\U0079\U0073\U0077\U006F\U006F\U006C\U0065', $splString->toUnicode()->__toString());
58    }
59
60    public function testCompare() {
61        $splString = new SplString('Hello, Easyswoole');
62        $this->assertEquals(-18, $splString->compare('Hello, Es'));
63    }
64
65    public function testLtrim() {
66        $splString = new SplString(' es');
67        $this->assertEquals('es', $splString->lTrim());
68    }
69
70    public function testRtrim() {
71        $splString = new SplString('es ');
72        $this->assertEquals('es', $splString->rTrim());
73    }
74
75    public function testTrime() {
76        $splString = new SplString(' es ');
77        $this->assertEquals('es', $splString->trim());
78    }
79
80    public function testPad() {
81        $splString = new SplString('Easy');
82        $splString->pad(10, 'swoole');
83        $this->assertEquals('Easyswoole', $splString->__toString());
84
85        $splString->pad(16, 'Hello,', STR_PAD_LEFT);
86        $this->assertEquals('Hello,Easyswoole', $splString->__toString());
87
88        $splString->pad(18, '@', STR_PAD_BOTH);
89        $this->assertEquals('@Hello,Easyswoole@', $splString->__toString());
90    }
91
92    public function testRepeat() {
93        $splString = new SplString('EasySwoole');
94        $splString->repeat(2);
95        $this->assertEquals('EasySwooleEasySwoole', $splString->__toString());
96    }
97
98    public function testLength() {
99        $splString = new SplString('EasySwoole');
100        $this->assertEquals(10, $splString->length());
101    }
102
103    public function testUpper() {
104        $splString = new SplString('EasySwoole');
105        $this->assertEquals('EASYSWOOLE', $splString->upper());
106    }
107
108    public function testLower() {
109        $splString = new SplString('EasySwoole');
110        $this->assertEquals('easyswoole', $splString->lower());
111    }
112
113    public function testStripTags() {
114        $splString = new SplString('<span>Easyswoole</span>');
115        $this->assertEquals('Easyswoole', $splString->stripTags()->__toString());
116    }
117
118    public function testReplace() {
119        $splString = new SplString('Hello, es!');
120        $this->assertEquals('Hello, Easyswoole!', $splString->replace('es', 'Easyswoole'));
121    }
122
123    public function testBetween() {
124        $splString = new SplString('Hello,Easyswoole');
125        $this->assertEquals(',', $splString->between('Hello', 'Easyswoole')->__toString());
126    }
127
128    public function testRegex() {
129        $splString = new SplString('Hello,Easyswoole');
130        $this->assertEquals('Easyswoole', $splString->regex('/Easyswoole/'));
131    }
132
133    public function testExist() {
134        $splString = new SplString('Hello,Easyswoole');
135        $this->assertTrue($splString->exist('Easyswoole'));
136    }
137
138    public function testKebab() {
139        $splString = new SplString('EasySwoole');
140        $this->assertEquals('easy-swoole', $splString->kebab()->__toString());
141    }
142
143    public function testSnake() {
144        $splString = new SplString('EasySwoole');
145        $this->assertEquals('easy_swoole', $splString->snake()->__toString());
146    }
147
148    public function testStudly() {
149        $splString = new SplString('easy_swoole');
150        $this->assertEquals('EasySwoole', $splString->studly()->__toString());
151    }
152
153    public function testCamel() {
154        $splString = new SplString('easy_swoole');
155        $this->assertEquals('easySwoole', $splString->camel()->__toString());
156    }
157
158    public function testReplaceArray() {
159        $splString = new SplString('easy_easy_easy');
160        $this->assertEquals('as_bs_cs', $splString->replaceArray('easy', ['as', 'bs', 'cs'])->__toString());
161    }
162
163    public function testReplaceFirst() {
164        $splString = new SplString('easy_easy_easy');
165        $this->assertEquals('as_easy_easy', $splString->replaceFirst('easy', 'as')->__toString());
166    }
167
168    public function testReplaceLast() {
169        $splString = new SplString('easy_easy_easy');
170        $this->assertEquals('easy_easy_as', $splString->replaceLast('easy', 'as')->__toString());
171    }
172
173    public function testStart() {
174        $splString = new SplString('Easyswoole');
175        $this->assertEquals('Hello,Easyswoole', $splString->start('Hello,')->__toString());
176    }
177
178    public function testAfter() {
179        $splString = new SplString('Hello,Easyswoole');
180        $this->assertEquals('Easyswoole', $splString->after('Hello,')->__toString());
181    }
182
183    public function testBefore() {
184        $splString = new SplString('Hello,Easyswoole');
185        $this->assertEquals('Hello,', $splString->before('Easyswoole')->__toString());
186    }
187
188    public function testEndsWith() {
189        $splString = new SplString('Hello,Easyswoole');
190        $this->assertTrue($splString->endsWith('Easyswoole'));
191    }
192
193    public function testStartsWith() {
194        $splString = new SplString('Hello,Easyswoole');
195        $this->assertTrue($splString->startsWith('Hello'));
196    }
197}
198