Completed
Push — master ( c2b30f...390de1 )
by Mehmet
03:01
created

MemcachedCacheTest::testIncrementDecrementItem()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 16
rs 9.4285
cc 1
eloc 14
nc 1
nop 0
1
<?php
2
namespace tests;
3
4
use Soupmix\Cache as c;
5
Use Memcached;
6
class MemcachedCacheTest extends \PHPUnit_Framework_TestCase
7
{
8
    /**
9
     * @var \Soupmix\Cache\MemcachedCache $client
10
     */
11
    protected $client = null;
12
13
    protected function setUp()
14
    {
15
        $config = [
16
            'bucket' => 'test',
17
            'hosts'   => ['127.0.0.1'],
18
        ];
19
        $handler= new Memcached($config['bucket']);
20
        $handler->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
21
        $handler->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
22
        if (!count($handler->getServerList())) {
23
            $hosts = [];
24
            foreach ($config['hosts'] as $host) {
25
                $hosts[] = [$host, 11211];
26
            }
27
            $handler->addServers($hosts);
28
        }
29
        $this->client = new c\MemcachedCache($handler);
30
        $this->client->clear();
31
    }
32
33
    public function testSetGetAndDeleteAnItem()
34
    {
35
        $ins1 = $this->client->set('test1','value1');
36
        $this->assertTrue($ins1);
37
        $value1 = $this->client->get('test1');
38
        $this->assertEquals('value1',$value1);
39
        $delete = $this->client->delete('test1');
40
        $this->assertTrue($delete);
41
    }
42
43
    public function testSetGetAndDeleteMultipleItems()
44
    {
45
        $cacheData = [
46
            'test1' => 'value1',
47
            'test2' => 'value2',
48
            'test3' => 'value3',
49
            'test4' => 'value4'
50
        ];
51
        $insMulti = $this->client->setMultiple($cacheData);
52
        $this->assertTrue($insMulti);
53
54
        $getMulti = $this->client->getMultiple(array_keys($cacheData));
55
56
        foreach ($cacheData as $key => $value) {
57
            $this->assertArrayHasKey($key, $getMulti);
58
            $this->assertEquals($value, $getMulti[$key]);
59
        }
60
        $deleteMulti = $this->client->deleteMultiple(array_keys($cacheData));
61
62
        foreach ($cacheData as $key => $value) {
63
            $this->assertTrue($deleteMulti[$key]);
64
        }
65
    }
66
67
    public function testIncrementAndDecrementACounterItem()
68
    {
69
        $this->client->set('counter', 0);
70
        $counter_i_1 = $this->client->increment('counter', 1);
71
        $this->assertEquals(1, $counter_i_1);
72
        $counter_i_3 = $this->client->increment('counter', 2);
73
        $this->assertEquals(3, $counter_i_3);
74
        $counter_i_4 = $this->client->increment('counter');
75
        $this->assertEquals(4, $counter_i_4);
76
        $counter_d_3 = $this->client->decrement('counter');
77
        $this->assertEquals(3, $counter_d_3);
78
        $counter_d_1 = $this->client->decrement('counter', 2);
79
        $this->assertEquals(1, $counter_d_1);
80
        $counter_d_0 = $this->client->decrement('counter', 1);
81
        $this->assertEquals(0, $counter_d_0);
82
    }
83
84
    public function testClear(){
85
        $clear = $this->client->clear();
86
        $this->assertTrue($clear);
87
    }
88
89
}
90