Newer
Older

Jan-Hendrik Willms
committed
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
/**
* @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
* @license GPL2 or any later version
*
* @covers StudipArrayObject
*/
class StudipArrayObjectTest extends \Codeception\Test\Unit
{
/**
* @covers StudipArrayObject::__construct
*/
public function testCreation()
{
$array = new StudipArrayObject();
$this->assertCount(0, $array);
}
/**
* @covers StudipArrayObject::__construct
*/
public function testCreationWithData()
{
$array = new StudipArrayObject(['foo' => 'bar', 42 => 23]);
$this->assertCount(2, $array);
return $array;
}
/**
* @covers StudipArrayObject::__construct
*/
public function testCreationWithInvalidIteratorClass()
{
$this->expectException(InvalidArgumentException::class);
$array = new StudipArrayObject([], StudipArrayObject::STD_PROP_LIST, 'DefinitelyNotAnIteratorClass');
}
/**
* @depends testCreationWithData
* @covers StudipArrayObject::offsetExists
* @covers StudipArrayObject::offsetGet
* @covers StudipArrayObject::offsetSet
* @covers StudipArrayObject::offsetUnset
*/
public function testArrayAccess(StudipArrayObject $array)
{
$this->assertTrue(isset($array['foo']));
$this->assertFalse(isset($array['bar']));
$this->assertEquals('bar', $array['foo']);
$this->assertEquals(23, $array[42]);
$array['bar'] = 'foo';
$this->assertCount(3, $array);
$this->assertTrue(isset($array['bar']));
$this->assertEquals('foo', $array['bar']);
unset($array['bar']);
$this->assertCount(2, $array);
$this->assertFalse(isset($array['bar']));
}
/**
* @depends testCreationWithData
* @covers StudipArrayObject::setFlags
* @covers StudipArrayObject::__isset
* @covers StudipArrayObject::__get
* @covers StudipArrayObject::__set
* @covers StudipArrayObject::__unset
*/
public function testObjectAccess(StudipArrayObject $array)
{
$array->setFlags(StudipArrayObject::ARRAY_AS_PROPS);
$this->assertTrue(isset($array->foo));
$this->assertFalse(isset($array->bar));
$this->assertEquals('bar', $array->foo);
$array->bar = 'foo';
$this->assertCount(3, $array);
$this->assertTrue(isset($array->bar));
$this->assertEquals('foo', $array->bar);
unset($array->bar);
$this->assertCount(2, $array);
$this->assertFalse(isset($array->bar));
$array->setFlags(StudipArrayObject::STD_PROP_LIST);
$this->expectException(InvalidArgumentException::class);
$test = isset($array->storage);
}
public function testAppend()
{
$array = new StudipArrayObject();
$this->assertCount(0, $array);
$array->append('foo');
$this->assertCount(1, $array);
}
public function testContains()
{
$array = new StudipArrayObject([1, 2, 3]);
$this->assertTrue($array->contains(1));
$this->assertFalse($array->contains(0));
}
public function testSerialization()
{
$array = new StudipArrayObject();
$array->foo = 'bar';
$serialized = serialize($array);
$unserialized = unserialize($serialized);
$this->assertNotFalse($unserialized);
$this->assertTrue(isset($unserialized->foo));
$this->assertEquals('bar', $unserialized->foo);
$this->expectException(InvalidArgumentException::class);
$test = isset($unserialized->storage);
}
}