Completed
Push — master ( 8cc4ca...2aa5db )
by Taosikai
11:59
created

ProcessTest::testStart()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
1
<?php
2
namespace Slince\Process\Tests;
3
4
use PHPUnit\Framework\TestCase;
5
use Slince\Process\Process;
6
use Slince\Process\SignalHandler;
7
use Slince\Process\Status;
8
9
class ProcessTest extends TestCase
10
{
11
    public function testStart()
12
    {
13
        $process = new Process(function () {
14
            sleep(1);
15
        });
16
        $this->assertFalse($process->isRunning());
17
        $process->start();
18
        $this->assertTrue($process->isRunning());
19
        $process->wait();
20
    }
21
22
    public function testWait()
23
    {
24
        $process = new Process(function () {
25
            sleep(2);
26
        });
27
        $process->start();
28
        $process->wait();
29
        $this->assertFalse($process->isRunning());
30
    }
31
32
    public function testGetExitCode()
33
    {
34
        $process = new Process(function () {
35
            usleep(100);
36
        });
37
        $this->assertNull($process->getExitCode());
38
        $process->run();
39
        $this->assertEquals(0, $process->getExitCode());
40
        $process = new Process(function () {
41
            exit(255);
42
        });
43
        $process->run();
44
        $this->assertEquals(255, $process->getExitCode());
45
    }
46
47
    public function testGetPid()
48
    {
49
        $process = new Process(function () {
50
            sleep(1);
51
        });
52
        $this->assertNull($process->getPid());
53
        $process->start();
54
        $this->assertGreaterThan(0, $process->getPid());
55
        $process->wait();
56
    }
57
58
59
    public function testIfSignaled()
60
    {
61
        $process = new Process(function () {
62
            sleep(1);
63
        });
64
        $process->start();
65
        $process->stop();
66
        $this->assertTrue($process->getStatus()->isSignaled());
67
        $this->assertEquals(SIGKILL, $process->getStatus()->getTerminateSignal());
68
    }
69
70
    public function testGetSignalHandler()
71
    {
72
        $process = new Process(function () {
73
            sleep(1);
74
        });
75
        $this->assertInstanceOf(SignalHandler::class, $process->getSignalHandler());
76
    }
77
78
    public function testGetStatus()
79
    {
80
        $process = new Process(function () {
81
            sleep(1);
82
        });
83
        $this->assertNull($process->getStatus());
84
        $process->run();
85
        $this->assertInstanceOf(Status::class, $process->getStatus());
86
    }
87
}
88