Completed
Push — master ( bc72c5...1b234b )
by richard
02:39
created

UriTest::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Test;
4
5
use Almendra\Http\Psr\Messages\Uri;
6
use Test\DummyObject;
7
8
class UriTest extends \PHPUnit_Framework_TestCase
9
{
10
    protected $uri;
11
12
    public function __construct()
13
    {
14
        $this->uri = new Uri;
15
    }
16
17
    /**
18
     * @test
19
     *
20
     * Test that it gets the scheme properly
21
     */
22
    public function it_gets_the_proper_scheme()
23
    {
24
        $this -> assertEquals($this -> uri -> withScheme('this is a sample scheme') -> getScheme(),
25
            'this is a sample scheme');
26
    }
27
28
    /**
29
     * @test
30
     *
31
     * Test that it returns the Uri as a string
32
     */
33
    public function it_returns_the_uri_as_a_string()
34
    {
35
        $uriStr = 'test uri';
36
        $newUri = new Uri($uriStr);
37
38
        $this -> assertEquals($newUri, $uriStr);
39
    }
40
41
    /**
42
     * @test
43
     *
44
     * Test that it returns a new instance of the Uri with the specified fragment
45
     */
46
    public function it_returns_the_specified_uri_fragment()
47
    {
48
        $fragment = 'some test fragment here';
49
        $newUri = $this -> uri -> withFragment($fragment);
50
51
        // fails
52
        $this -> assertFalse($this -> uri -> getFragment() === $fragment);
53
54
        // passes
55
        $this -> assertTrue($newUri -> getFragment() === $fragment);
56
57
        // passes --diff instance
58
        $this -> assertEquals($this -> uri === $newUri, false);
59
    }
60
61
    /**
62
     * @test
63
     *
64
     * Test that it returns the specified query string
65
     */
66
    public function it_returns_the_specified_query_string()
67
    {
68
        $query = 'some test query string here';
69
        $newUri = $this -> uri -> withQuery($query);
70
71
        // fails
72
        $this -> assertFalse($this -> uri -> getQuery() === $query);
73
74
        // passes
75
        $this -> assertTrue($newUri -> getQuery() === $query);
76
77
        // passes --diff instance
78
        $this -> assertEquals($this -> uri === $newUri, false);
79
    }
80
81
    /**
82
     * @test
83
     *
84
     * Test that it validates the query string
85
     */
86
    public function it_validates_the_query_string()
87
    {
88
        $query = 2323; // throws \InvalidArgumentException
89
90
        try {
91
            $newUri = $this -> uri -> withQuery($query);
0 ignored issues
show
Unused Code introduced by
$newUri is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
92
        } catch (\InvalidArgumentException $e) {
93
            $result = true;
94
        }
95
96
        $this -> assertTrue($result);
0 ignored issues
show
Bug introduced by
The variable $result does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
97
98
        // implements __toString() --throws no exception
99
        $queryObject = new DummyObject($query);
0 ignored issues
show
Unused Code introduced by
$queryObject is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
100
        try {
101
            $newUri = $this -> uri -> withQuery($query);
0 ignored issues
show
Unused Code introduced by
$newUri is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
102
        } catch (\InvalidArgumentException $e) {
103
            $result = false;
104
        }
105
106
        $this -> assertFalse($result);
107
    }
108
109
110
    // path validity
111
    // withpath()
112
    // withHost()
113
    // withPort()
114
    //
115
}
116