Completed
Push — master ( 06117a...d54351 )
by Rafael
03:01
created

Array2ObjectTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 2
c 4
b 0
f 0
lcom 1
cbo 5
dl 0
loc 83
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B testArray2Object() 0 80 2
1
<?php
2
3
/**
4
 * LICENSE: This file is subject to the terms and conditions defined in
5
 * file 'LICENSE', which is part of this source code package.
6
 *
7
 * @copyright 2016 Copyright(c) - All rights reserved.
8
 */
9
10
namespace Rafrsr\LibArray2Object\Tests;
11
12
use Rafrsr\LibArray2Object\Array2Object;
13
use Rafrsr\LibArray2Object\Parser\CallableParser;
14
use Rafrsr\LibArray2Object\Tests\Fixtures\Team;
15
16
class Array2ObjectTest extends \PHPUnit_Framework_TestCase
17
{
18
    public function testArray2Object()
19
    {
20
        $teamArray = [
21
            'name' => 'Dream Team',
22
            'Manager' => [
23
                'name' => 'Big Manager',
24
                'salary' => '$10000'
25
            ],
26
            'createdAt' => '2016-01-01',
27
            'points' => '25',
28
            'players' => [
29
                [
30
                    'name' => 'Player 1',
31
                    'number' => '1',
32
                    'height' => '1.80',
33
                    'regular' => 'true'
34
                ],
35
                [
36
                    'name' => 'Player 2',
37
                    'number' => '2',
38
                    'height' => '1.85',
39
                    'regular' => 0
40
                ],
41
                [
42
                    'name' => 'Player 3',
43
                    'number' => '3',
44
                    'height' => '1.78',
45
                    'regular' => 'yes'
46
                ]
47
            ],
48
            'scores' => [
49
                '2016' => '29',
50
                '2015' => '28',
51
                '2014' => '30',
52
            ]
53
        ];
54
55
        //register custom parser
56
        Array2Object::registerParser(
57
            new CallableParser(
58
                function ($value, $type, \ReflectionProperty $property, $object) {
0 ignored issues
show
Unused Code introduced by
The parameter $object is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
59
                    if ($property->name === 'salary') {
60
                        $value = str_replace('$', null, $value);
61
                    }
62
63
                    return $value;
64
                }
65
            )
66
        );
67
68
        /** @var Team $team */
69
        $team = Array2Object::createObject(Team::class, $teamArray);
70
        static::assertEquals('Dream Team', $team->getName());
71
        static::assertEquals(25, $team->getPoints());
72
        static::assertEquals(29, $team->getScores()[2016]);
73
        static::assertEquals('2016-01-01', $team->getCreatedAt()->format('Y-m-d'));
74
75
        static::assertEquals('Big Manager', $team->getManager()->getName());
76
        static::assertEquals(10000, $team->getManager()->getSalary());
77
78
        static::assertEquals('Player 1', $team->getPlayers()[0]->getName());
79
        static::assertEquals(1, $team->getPlayers()[0]->getNumber());
80
        static::assertEquals(1.80, $team->getPlayers()[0]->getHeight());
81
        static::assertTrue($team->getPlayers()[0]->isRegular());
82
83
        static::assertEquals('Player 2', $team->getPlayers()[1]->getName());
84
        static::assertEquals(2, $team->getPlayers()[1]->getNumber());
85
        static::assertEquals(1.85, $team->getPlayers()[1]->getHeight());
86
        static::assertFalse($team->getPlayers()[1]->isRegular());
87
88
        static::assertTrue($team->getPlayers()[2]->isRegular());
89
90
        static::assertInternalType('string', $team->getName());
91
        static::assertInternalType('integer', $team->getPoints());
92
        static::assertInternalType('float', $team->getManager()->getSalary());
93
        static::assertInternalType('boolean', $team->getPlayers()[0]->isRegular());
94
        static::assertInternalType('float', $team->getPlayers()[0]->getHeight());
95
        static::assertInternalType('boolean', $team->getPlayers()[2]->isRegular());
96
        static::assertInternalType('integer', $team->getScores()[2016]);
97
    }
98
}
99