1<?php
2use Codeception\Util\Stub;
3
4require(__DIR__ . '/../../helpers/TbArray.php');
5
6class TbArrayTest extends TbTestCase
7{
8   /**
9    * @var \CodeGuy
10    */
11    protected $codeGuy;
12
13    public function testGetValue()
14    {
15        $array = array('key' => 'value');
16        $this->assertEquals('value', TbArray::getValue('key', $array));
17        $nullValueArray = array('key' => null);
18        $this->assertNull(TbArray::getValue('key', $nullValueArray));
19        $this->assertNull(TbArray::getValue('key', $nullValueArray, 'not null'), 'Null value has to be found');
20    }
21
22    public function testPopValue()
23    {
24        $array = array('key' => 'value');
25        $this->assertEquals('value', TbArray::popValue('key', $array));
26        $this->assertArrayNotHasKey('key', $array);
27        $nullValueArray = array('key' => null);
28        $this->assertNull(TbArray::popValue('key', $nullValueArray, 'not null'), 'Null value has to be found');
29        $this->assertArrayNotHasKey('key', $nullValueArray);
30    }
31
32    public function testDefaultValue()
33    {
34        $array = array();
35        TbArray::defaultValue('key', 'default', $array);
36        $this->assertEquals('default', TbArray::getValue('key', $array));
37        TbArray::defaultValue('key', 'value', $array);
38        $this->assertEquals('default', TbArray::getValue('key', $array));
39    }
40
41    public function testDefaultValues()
42    {
43        $array = array('my' => 'value');
44        TbArray::defaultValues(array('these' => 'are', 'my' => 'defaults'), $array);
45        $this->assertEquals('are', TbArray::getValue('these', $array));
46        $this->assertEquals('value', TbArray::getValue('my', $array));
47    }
48
49    public function testRemoveValue()
50    {
51        $array = array('key' => 'value');
52        TbArray::removeValue('key', $array);
53        $this->assertArrayNotHasKey('key', $array);
54    }
55
56    public function testRemoveValues()
57    {
58        $array = array('these' => 'are', 'my' => 'values');
59        TbArray::removeValues(array('these', 'my'), $array);
60        $this->assertArrayNotHasKey('these', $array);
61        $this->assertArrayNotHasKey('my', $array);
62    }
63
64    public function testCopyValues()
65    {
66        $a = array('key' => 'value');
67        $b = array();
68        $array = TbArray::copyValues(array('key'), $a, $b);
69        $this->assertEquals($a, $array);
70        $a = array('key' => 'value');
71        $b = array('key' => 'other');
72        $array = TbArray::copyValues(array('key'), $a, $b, true);
73        $this->assertEquals($a, $array);
74    }
75
76    public function testMoveValues()
77    {
78        $a = array('key' => 'value');
79        $b = array();
80        $array = TbArray::moveValues(array('key'), $a, $b);
81        $this->assertArrayNotHasKey('key', $a);
82        $this->assertEquals('value', TbArray::getValue('key', $array));
83        $a = array('key' => 'value');
84        $b = array('key' => 'other');
85        $array = TbArray::moveValues(array('key'), $a, $b, true);
86        $this->assertEquals('value', TbArray::getValue('key', $array));
87    }
88
89    public function testMerge()
90    {
91        $a = array('this' => 'is', 'array' => 'a');
92        $b = array('is' => 'this', 'b' => 'array');
93        $array = TbArray::merge($a, $b);
94        $this->assertEquals('is', TbArray::getValue('this', $array));
95        $this->assertEquals('a', TbArray::getValue('array', $array));
96        $this->assertEquals('this', TbArray::getValue('is', $array));
97        $this->assertEquals('array', TbArray::getValue('b', $array));
98    }
99}