Passed
Push — master ( 1194ed...f9a0e6 )
by Tomáš
01:47
created

ArraysTest::testGetReference()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 17
rs 9.9332
c 0
b 0
f 0
1
<?php declare(strict_types = 1);
2
3
namespace Apicart\Utils\Tests\Arrays;
4
5
use Apicart\Utils\Arrays\Arrays;
6
use PHPUnit\Framework\TestCase;
7
8
final class ArraysTest extends TestCase
9
{
10
11
	public function testGet(): void
12
	{
13
		$data = [
14
			'id' => 12,
15
			'tags' => ['first', 'second', 'third'],
16
			'parameters' => [
17
				[
18
					'key' => 'billingAddress',
19
					'value' => [
20
						'firstName' => 'John',
21
						'lastName' => 'Doe',
22
					],
23
				],
24
				[
25
					'key' => 'paymentMethod',
26
					'value' => 'PPL',
27
				],
28
			],
29
			'tree' => [
30
				'left' => [
31
					'node' => 'Left node',
32
				],
33
				'right' => [
34
					'node' => 'Right node',
35
				],
36
			],
37
		];
38
39
		self::assertSame(12, Arrays::get($data, 'id'));
40
		self::assertSame('second', Arrays::get($data, 'tags.1'));
41
		self::assertSame('John', Arrays::get($data, 'parameters.key:billingAddress.value.firstName'));
42
		self::assertSame('PPL', Arrays::get($data, 'parameters.key:paymentMethod.value'));
43
		self::assertSame('Right node', Arrays::get($data, 'tree.right.node'));
44
45
		self::assertSame(null, Arrays::get($data, 'tree.center.node'));
46
		self::assertSame('Default value', Arrays::get($data, 'tree.center.node', 'Default value'));
47
	}
48
49
50
	public function testGetReference(): void
51
	{
52
		$data = [
53
			'id' => 12,
54
			'tree' => [
55
				'left' => [
56
					'node' => 'Left node',
57
				],
58
			],
59
		];
60
61
		$nodeReference = &$data['tree']['left']['node'];
62
		self::assertSame($nodeReference, Arrays::getReference($data, ['tree', 'left', 'node']));
63
64
		$idReference = & Arrays::getReference($data, 'id');
65
		$idReference = 10;
66
		self::assertSame($idReference, $data['id']);
67
	}
68
69
70
	public function testSet(): void
71
	{
72
		$data = [
73
			'id' => 12,
74
			'tree' => [
75
				'left' => [
76
					'node' => 'Left node',
77
				],
78
			],
79
		];
80
81
		$result = Arrays::set($data, 'id', 1);
82
		self::assertSame(1, $result['id']);
83
84
		$result = Arrays::set($data, 'tree.left.position', 3);
85
		self::assertSame(3, $result['tree']['left']['position']);
86
87
		$result = Arrays::set($data, 'foo', 'bar');
88
		self::assertSame('bar', $result['foo']);
89
	}
90
91
92
	public function testMerge(): void
93
	{
94
		$one = [
95
			'a' => 1,
96
			'b' => [1, 2, 3],
97
			'c' => false,
98
		];
99
		$two = [
100
			'c' => true,
101
			'd' => ['a'],
102
		];
103
104
		$result = Arrays::merge($two, $one);
105
106
		self::assertSame([
107
			'a' => 1,
108
			'b' => [1, 2, 3],
109
			'c' => true,
110
			'd' => ['a'],
111
		], $result);
112
	}
113
114
}
115