assertEquals([1, 2, 3], iterator_to_array($decorator)); } /** * Tests it toArray() method */ public function testToArray(): void { $data = new ArrayIterator([1, 2, 3]); $decorator = new ResultSetDecorator($data); $this->assertEquals([1, 2, 3], $decorator->toArray()); } /** * Tests JSON encoding method */ public function testToJson(): void { $data = new ArrayIterator([1, 2, 3]); $decorator = new ResultSetDecorator($data); $this->assertEquals(json_encode([1, 2, 3]), json_encode($decorator)); } /** * Tests serializing and unserializing the decorator */ public function testSerialization(): void { $data = new ArrayIterator([1, 2, 3]); $decorator = new ResultSetDecorator($data); $serialized = serialize($decorator); $this->assertEquals([1, 2, 3], unserialize($serialized)->toArray()); } /** * Test the first() method which is part of the ResultSet duck type. */ public function testFirst(): void { $data = new ArrayIterator([1, 2, 3]); $decorator = new ResultSetDecorator($data); $this->assertSame(1, $decorator->first()); $this->assertSame(1, $decorator->first()); } /** * Test the count() method which is part of the ResultSet duck type. */ public function testCount(): void { $data = new ArrayIterator([1, 2, 3]); $decorator = new ResultSetDecorator($data); $this->assertSame(3, $decorator->count()); $this->assertCount(3, $decorator); } /** * Test the __debugInfo() method which is used by DebugKit */ public function testDebugInfo(): void { Configure::write('App.ResultSetDebugLimit', 2); $data = new ArrayIterator([1, 2, 3]); $decorator = new ResultSetDecorator($data); $this->assertEquals([ 'count' => 3, 'items' => [1, 2], ], $decorator->__debugInfo()); } }