Completed
Push — develop ( 686594...b5844e )
by Florent
03:11
created

CompressionTest::testGZip()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 10
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
1
<?php
2
3
/*
4
 * The MIT License (MIT)
5
 *
6
 * Copyright (c) 2014-2016 Spomky-Labs
7
 *
8
 * This software may be modified and distributed under the terms
9
 * of the MIT license.  See the LICENSE file for details.
10
 */
11
12
use Jose\Compression\CompressionInterface;
13
use Jose\Compression\CompressionManager;
14
use Jose\Compression\Deflate;
15
use Jose\Compression\GZip;
16
use Jose\Compression\ZLib;
17
18
/**
19
 * Class CompressionTest.
20
 *
21
 * @group Unit
22
 */
23
class CompressionTest extends \PHPUnit_Framework_TestCase
24
{
25
    public function testGetValidCompressionAlgorithm()
26
    {
27
        $manager = new CompressionManager();
28
        $manager->addCompressionAlgorithm(new Deflate());
29
        $manager->addCompressionAlgorithm(new GZip());
30
        $manager->addCompressionAlgorithm(new ZLib());
31
32
        $compression = $manager->getCompressionAlgorithm('DEF');
33
        $this->assertInstanceOf(CompressionInterface::class, $compression);
34
    }
35
36
    public function testGetInvalidCompressionAlgorithm()
37
    {
38
        $manager = new CompressionManager();
39
        $manager->addCompressionAlgorithm(new Deflate());
40
        $manager->addCompressionAlgorithm(new GZip());
41
        $manager->addCompressionAlgorithm(new ZLib());
42
43
        $compression = $manager->getCompressionAlgorithm('FOO');
44
        $this->assertNull($compression);
45
    }
46
47
    public function testDeflate()
48
    {
49
        $compression = new Deflate(9);
50
51
        $data = 'Live long and Prosper.';
52
        $compressed = $compression->compress($data);
53
        $uncompressed = $compression->uncompress($compressed);
54
        $this->assertNotNull($compressed);
55
        $this->assertSame($data, $uncompressed);
56
    }
57
58
    public function testGZip()
59
    {
60
        $compression = new GZip(9);
61
62
        $data = 'Live long and Prosper.';
63
        $compressed = $compression->compress($data);
64
        $uncompressed = $compression->uncompress($compressed);
65
        $this->assertNotNull($compressed);
66
        $this->assertSame($data, $uncompressed);
67
    }
68
69
    public function testZLib()
70
    {
71
        $compression = new ZLib(9);
72
73
        $data = 'Live long and Prosper.';
74
        $compressed = $compression->compress($data);
75
        $uncompressed = $compression->uncompress($compressed);
76
        $this->assertNotNull($compressed);
77
        $this->assertSame($data, $uncompressed);
78
    }
79
80
    /**
81
     * @expectedException \InvalidArgumentException
82
     * @expectedExceptionMessage The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.
83
     */
84
    public function testDeflateInvalidCompressionLevel()
85
    {
86
        new Deflate(100);
87
    }
88
89
    /**
90
     * @expectedException \InvalidArgumentException
91
     * @expectedExceptionMessage The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.
92
     */
93
    public function testGZipInvalidCompressionLevel()
94
    {
95
        new GZip(100);
96
    }
97
98
    /**
99
     * @expectedException \InvalidArgumentException
100
     * @expectedExceptionMessage The compression level can be given as 0 for no compression up to 9 for maximum compression. If -1 given, the default compression level will be the default compression level of the zlib library.
101
     */
102
    public function testZLibInvalidCompressionLevel()
103
    {
104
        new ZLib(100);
105
    }
106
}
107