1
exercism fetch php run-length-encoding

run-length-encoding_test.php

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
<?php

require "run-length-encoding.php";

/**
 * Class RunLengthEncodingTest
 */
class RunLengthEncodingTest extends PHPUnit\Framework\TestCase
{
    public function testEncodeEmptyString()
    {
        $this->assertEquals('', encode(''));
    }

    public function testEncodeSingleCharactersOnly()
    {
        $this->assertEquals('XYZ', encode('XYZ'));
    }

    public function testDecodeEmptyString()
    {
        $this->assertEquals('', decode(''));
    }

    public function testDecodeSingleCharactersOnly()
    {
        $this->assertEquals('XYZ', decode('XYZ'));
    }

    public function testEncodeSimple()
    {
        $this->assertEquals('2A3B4C', encode('AABBBCCCC'));
    }

    public function testDecodeSimple()
    {
        $this->assertEquals('AABBBCCCC', decode('2A3B4C'));
    }

    public function testEncodeWithSingleValues()
    {
        $this->assertEquals(
            '12WB12W3B24WB',
            encode('WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB')
        );
    }

    public function testDecodeWithSingleValues()
    {
        $this->assertEquals(
            'WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB',
            decode('12WB12W3B24WB')
        );
    }

    public function testDecodeMultipleWhitespaceMixedInString()
    {
        $this->assertEquals('  hsqq qww  ', decode('2 hs2q q2w2 '));
    }

    public function testEncodeDecodeCombination()
    {
        $this->assertEquals('zzz ZZ  zZ', decode(encode('zzz ZZ  zZ')));
    }
}