Completed
Pull Request — master (#136)
by Alex
28:55 queued 09:58
created

BidirectionalMapTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 70
Duplicated Lines 37.14 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 26
loc 70
rs 10
c 1
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A testRemoveKeyAndValueFromEmpty() 0 6 1
A testPut() 0 8 1
A testPutAllThenReset() 0 11 1
A testGetKeyAndValueSeparately() 0 11 1
A testPutWithOverlappingKeys() 13 13 1
A testPutWithOverlappingValues() 13 13 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 AlgoWeb\ODataMetadata\Tests;
4
5
use AlgoWeb\ODataMetadata\BidirectionalMap;
6
7
class BidirectionalMapTest extends TestCase
8
{
9
    public function testRemoveKeyAndValueFromEmpty()
10
    {
11
        $foo = new BidirectionalMap();
12
        $this->assertNull($foo->removeKey('key'));
13
        $this->assertNull($foo->removeValue('value'));
14
    }
15
16
    public function testPut()
17
    {
18
        $foo = new BidirectionalMap();
19
20
        $foo->put('foo', 'bar');
21
        $this->assertEquals(1, count($foo->getAllKeys()));
22
        $this->assertEquals(1, count($foo->getAllValues()));
23
    }
24
25
    public function testPutAllThenReset()
26
    {
27
        $foo = new BidirectionalMap();
28
29
        $foo->putAll(['foo' => 'bar']);
30
        $this->assertEquals(1, count($foo->getAllKeys()));
31
        $this->assertEquals(1, count($foo->getAllValues()));
32
        $foo->reset();
33
        $this->assertEquals(0, count($foo->getAllKeys()));
34
        $this->assertEquals(0, count($foo->getAllValues()));
35
    }
36
37
    public function testGetKeyAndValueSeparately()
38
    {
39
        $foo = new BidirectionalMap();
40
41
        $foo->putAll(['foo' => 'bar']);
42
        $this->assertEquals('bar', $foo->getValue('foo'));
43
        $this->assertEquals('foo', $foo->getKey('bar'));
44
        $foo->reset();
45
        $this->assertEquals(null, $foo->getValue('foo'));
46
        $this->assertEquals(null, $foo->getKey('bar'));
47
    }
48
49 View Code Duplication
    public function testPutWithOverlappingKeys()
50
    {
51
        $foo = new BidirectionalMap();
52
53
        $foo->put('foo', 'bar');
54
        $this->assertEquals('bar', $foo->getValue('foo'));
55
        $this->assertEquals('foo', $foo->getKey('bar'));
56
57
        $foo->put('foo', 'rebar');
58
        $this->assertEquals(null, $foo->getKey('bar'));
59
        $this->assertEquals('rebar', $foo->getValue('foo'));
60
        $this->assertEquals('foo', $foo->getKey('rebar'));
61
    }
62
63 View Code Duplication
    public function testPutWithOverlappingValues()
64
    {
65
        $foo = new BidirectionalMap();
66
67
        $foo->put('foo', 'bar');
68
        $this->assertEquals('bar', $foo->getValue('foo'));
69
        $this->assertEquals('foo', $foo->getKey('bar'));
70
71
        $foo->put('nufoo', 'bar');
72
        $this->assertEquals('nufoo', $foo->getKey('bar'));
73
        $this->assertEquals(null, $foo->getValue('foo'));
74
        $this->assertEquals('bar', $foo->getValue('nufoo'));
75
    }
76
}
77