chengkun
2025-06-05 4080b5997b38ca84b3b203c7101dcadb97b76925
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
<?php
namespace Tests;
 
use think\helper\Str;
 
class StrTest extends TestCase
{
    public function testCamel()
    {
        $this->assertSame('fooBar', Str::camel('FooBar'));
        $this->assertSame('fooBar', Str::camel('FooBar'));
        $this->assertSame('fooBar', Str::camel('foo_bar'));
        $this->assertSame('fooBar', Str::camel('_foo_bar'));
        $this->assertSame('fooBar', Str::camel('_foo_bar_'));
    }
 
    public function testStudly()
    {
        $this->assertSame('FooBar', Str::studly('fooBar'));
        $this->assertSame('FooBar', Str::studly('_foo_bar'));
        $this->assertSame('FooBar', Str::studly('_foo_bar_'));
        $this->assertSame('FooBar', Str::studly('_foo_bar_'));
    }
 
    public function testSnake()
    {
        $this->assertSame('think_p_h_p_framework', Str::snake('ThinkPHPFramework'));
        $this->assertSame('think_php_framework', Str::snake('ThinkPhpFramework'));
        $this->assertSame('think php framework', Str::snake('ThinkPhpFramework', ' '));
        $this->assertSame('think_php_framework', Str::snake('Think Php Framework'));
        $this->assertSame('think_php_framework', Str::snake('Think    Php      Framework   '));
        // ensure cache keys don't overlap
        $this->assertSame('think__php__framework', Str::snake('ThinkPhpFramework', '__'));
        $this->assertSame('think_php_framework_', Str::snake('ThinkPhpFramework_', '_'));
        $this->assertSame('think_php_framework', Str::snake('think php Framework'));
        $this->assertSame('think_php_frame_work', Str::snake('think php FrameWork'));
        // prevent breaking changes
        $this->assertSame('foo-bar', Str::snake('foo-bar'));
        $this->assertSame('foo-_bar', Str::snake('Foo-Bar'));
        $this->assertSame('foo__bar', Str::snake('Foo_Bar'));
        $this->assertSame('żółtałódka', Str::snake('ŻółtaŁódka'));
    }
 
    public function testTitle()
    {
        $this->assertSame('Welcome Back', Str::title('welcome back'));
    }
 
    public function testRandom()
    {
        $this->assertIsString(Str::random(10));
    }
 
    public function testUpper()
    {
        $this->assertSame('USERNAME', Str::upper('username'));
        $this->assertSame('USERNAME', Str::upper('userNaMe'));
    }
}