]> git.mxchange.org Git - friendica.git/blob - tests/src/Core/Lock/LockTest.php
code standards / simplifications
[friendica.git] / tests / src / Core / Lock / LockTest.php
1 <?php
2
3 namespace Friendica\Test\Core\Lock;
4
5 use Friendica\App;
6 use Friendica\Core\Config;
7 use PHPUnit\Framework\TestCase;
8
9 abstract class LockTest extends TestCase
10 {
11         /**
12          * @var \Friendica\Core\Lock\ILockDriver
13          */
14         protected $instance;
15
16         abstract protected function getInstance();
17
18         protected function setUp()
19         {
20                 global $a;
21                 parent::setUp();
22                 $this->instance = $this->getInstance();
23
24                 // Reusable App object
25                 $this->app = new App(__DIR__.'/../');
26                 $a = $this->app;
27
28                 // Default config
29                 Config::set('config', 'hostname', 'localhost');
30                 Config::set('system', 'throttle_limit_day', 100);
31                 Config::set('system', 'throttle_limit_week', 100);
32                 Config::set('system', 'throttle_limit_month', 100);
33                 Config::set('system', 'theme', 'system_theme');
34         }
35
36         public function testLock() {
37                 $this->instance->acquire('foo', 1);
38                 $this->assertTrue($this->instance->isLocked('foo'));
39                 $this->assertFalse($this->instance->isLocked('bar'));
40         }
41
42         public function testDoubleLock() {
43                 $this->instance->acquire('foo', 1);
44                 $this->assertTrue($this->instance->isLocked('foo'));
45                 // We already locked it
46                 $this->assertTrue($this->instance->acquire('foo', 1));
47         }
48
49         public function testReleaseLock() {
50                 $this->instance->acquire('foo', 1);
51                 $this->assertTrue($this->instance->isLocked('foo'));
52                 $this->instance->release('foo');
53                 $this->assertFalse($this->instance->isLocked('foo'));
54         }
55
56         public function testReleaseAll() {
57                 $this->instance->acquire('foo', 1);
58                 $this->instance->acquire('bar', 1);
59                 $this->instance->acquire('#/$%§', 1);
60
61                 $this->instance->releaseAll();
62
63                 $this->assertFalse($this->instance->isLocked('foo'));
64                 $this->assertFalse($this->instance->isLocked('bar'));
65                 $this->assertFalse($this->instance->isLocked('#/$%§'));
66         }
67
68         public function testReleaseAfterUnlock() {
69                 $this->instance->acquire('foo', 1);
70                 $this->instance->acquire('bar', 1);
71                 $this->instance->acquire('#/$%§', 1);
72
73                 $this->instance->release('foo');
74
75                 $this->instance->releaseAll();
76
77                 $this->assertFalse($this->instance->isLocked('bar'));
78                 $this->assertFalse($this->instance->isLocked('#/$%§'));
79         }
80 }