File: GenericArrayTest.php

package info (click to toggle)
php-ramsey-collection 2.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 612 kB
  • sloc: php: 3,239; xml: 31; makefile: 22
file content (113 lines) | stat: -rw-r--r-- 3,396 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php

declare(strict_types=1);

namespace Ramsey\Collection\Test;

use ArrayIterator;
use Ramsey\Collection\ArrayInterface;
use Ramsey\Collection\GenericArray;

use function count;
use function serialize;
use function unserialize;

/**
 * Tests for GenericArray, as well as coverage for AbstractArray
 */
class GenericArrayTest extends TestCase
{
    public function testConstructWithNoParameters(): void
    {
        $genericArrayObject = new GenericArray();

        $this->assertIsArray($genericArrayObject->toArray());
        $this->assertEmpty($genericArrayObject->toArray());
        $this->assertTrue($genericArrayObject->isEmpty());
    }

    public function testConstructWithArray(): void
    {
        $phpArray = ['foo' => 'bar', 'baz'];
        $genericArrayObject = new GenericArray($phpArray);

        $this->assertSame($phpArray, $genericArrayObject->toArray());
        $this->assertFalse($genericArrayObject->isEmpty());
    }

    public function testGetIterator(): void
    {
        $genericArrayObject = new GenericArray();

        $this->assertInstanceOf(ArrayIterator::class, $genericArrayObject->getIterator());
    }

    public function testArrayAccess(): void
    {
        $phpArray = ['foo' => 123];
        $genericArrayObject = new GenericArray($phpArray);

        $this->assertTrue(isset($genericArrayObject['foo']));
        $this->assertFalse(isset($genericArrayObject['bar']));
        $this->assertSame($phpArray['foo'], $genericArrayObject['foo']);

        $genericArrayObject['bar'] = 456;
        unset($genericArrayObject['foo']);

        $this->assertSame(456, $genericArrayObject['bar']);
        $this->assertArrayNotHasKey('key', $genericArrayObject);
    }

    public function testOffsetSetWithEmptyOffset(): void
    {
        $genericArrayObject = new GenericArray();
        $genericArrayObject[] = 123;

        $this->assertSame(123, $genericArrayObject[0]);
    }

    /**
     * This serves to ensure that isset() called on the array object for an
     * offset with a NULL value has the same behavior has isset() called on
     * any standard PHP array offset with a NULL value.
     */
    public function testOffsetExistsWithNullValue(): void
    {
        $genericArrayObject = new GenericArray();
        $genericArrayObject['foo'] = null;

        $this->assertFalse(isset($genericArrayObject['foo']));
    }

    public function testSerializable(): void
    {
        $phpArray = ['foo' => 123, 'bar' => 456];
        $genericArrayObject = new GenericArray($phpArray);

        $genericArrayObjectSerialized = serialize($genericArrayObject);
        $genericArrayObject2 = unserialize($genericArrayObjectSerialized);

        $this->assertInstanceOf(ArrayInterface::class, $genericArrayObject2);
        $this->assertEquals($genericArrayObject, $genericArrayObject2);
    }

    public function testCountable(): void
    {
        $phpArray = ['foo' => 123, 'bar' => 456];
        $genericArrayObject = new GenericArray($phpArray);

        $this->assertCount(count($phpArray), $genericArrayObject);
    }

    public function testClear(): void
    {
        $phpArray = ['foo' => 'bar'];
        $genericArrayObject = new GenericArray($phpArray);

        $this->assertSame($phpArray, $genericArrayObject->toArray());

        $genericArrayObject->clear();

        $this->assertEmpty($genericArrayObject->toArray());
    }
}