Completed
Push — master ( 461f45...0bbf45 )
by Jacob
04:57
created

PhpQuickProfilerTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 71
Duplicated Lines 35.21 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 4
Bugs 1 Features 3
Metric Value
wmc 7
c 4
b 1
f 3
lcom 1
cbo 4
dl 25
loc 71
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A testConstruct() 0 10 1
A testSetConsole() 0 8 1
A testSetDisplay() 0 8 1
A testGatherFileData() 13 13 2
A testGatherMemoryData() 12 12 1
A testSetProfiledQueries() 0 11 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace Particletree\Pqp;
4
5
use PHPUnit_Framework_Testcase;
6
7
// namespace hack on microtime functionality
8
function microtime()
9
{
10
    return 1450355136.5706;
11
}
12
13
// namespace hack on included files functionality
14
function get_included_files()
15
{
16
    return array(
17
      'index.php',
18
      'src/Class.php'
19
    );
20
}
21
22
// namespace hack on filesize
23
function filesize($filename)
24
{
25
    return strlen($filename) * 100;
26
}
27
28
// namespace hack on memory usage
29
function memory_get_peak_usage()
30
{
31
    return 123456789;
32
}
33
34
// namespace hack on ini settings
35
function ini_get($setting)
36
{
37
    if ($setting == 'memory_limit') {
38
        return '128M';
39
    }
40
    return \ini_get($setting);
41
}
42
43
class PhpQuickProfilerTest extends PHPUnit_Framework_TestCase
44
{
45
46
    public function testConstruct()
47
    {
48
        $startTime = microtime(true);
49
50
        $profiler = new PhpQuickProfiler();
51
        $this->assertAttributeEquals($startTime, 'startTime', $profiler);
52
53
        $profiler = new PhpQuickProfiler($startTime);
54
        $this->assertAttributeEquals($startTime, 'startTime', $profiler);
55
    }
56
57
    public function testSetConsole()
58
    {
59
        $console = new Console();
60
        $profiler = new PhpQuickProfiler();
61
        $profiler->setConsole($console);
62
63
        $this->assertAttributeSame($console, 'console', $profiler);
64
    }
65
66
    public function testSetDisplay()
67
    {
68
        $display = new Display();
69
        $profiler = new PhpQuickProfiler();
70
        $profiler->setDisplay($display);
71
72
        $this->assertAttributeSame($display, 'display', $profiler);
73
    }
74
75 View Code Duplication
    public function testGatherFileData()
1 ignored issue
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
76
    {
77
        $files = get_included_files();
78
        $profiler = new PhpQuickProfiler();
79
        $gatheredFileData = $profiler->gatherFileData();
80
81
        foreach ($gatheredFileData as $fileData) {
82
            $this->assertArrayHasKey('name', $fileData);
83
            $this->assertContains($fileData['name'], $files);
84
            $this->assertArrayHasKey('size', $fileData);
85
            $this->assertEquals($fileData['size'], filesize($fileData['name']));
86
        }
87
    }
88
89 View Code Duplication
    public function testGatherMemoryData()
1 ignored issue
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
90
    {
91
        $memory_usage = memory_get_peak_usage();
92
        $allowed_limit = ini_get('memory_limit');
93
        $profiler = new PhpQuickProfiler();
94
        $gatheredMemoryData = $profiler->gatherMemoryData();
95
96
        $this->assertArrayHasKey('used', $gatheredMemoryData);
97
        $this->assertEquals($memory_usage, $gatheredMemoryData['used']);
98
        $this->assertArrayHasKey('allowed', $gatheredMemoryData);
99
        $this->assertEquals($allowed_limit, $gatheredMemoryData['allowed']);
100
    }
101
102
    public function testSetProfiledQueries()
103
    {
104
        $profiledQueries = array(
105
            'sql' => 'SELECT * FROM example',
106
            'time' => 25
107
        );
108
        $profiler = new PhpQuickProfiler();
109
        $profiler->setProfiledQueries($profiledQueries);
110
111
        $this->assertAttributeEquals($profiledQueries, 'profiledQueries', $profiler);
112
    }
113
}
114