annotate vendor/sebastian/object-enumerator/tests/EnumeratorTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2 /*
Chris@14 3 * This file is part of Object Enumerator.
Chris@14 4 *
Chris@14 5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
Chris@14 6 *
Chris@14 7 * For the full copyright and license information, please view the LICENSE
Chris@14 8 * file that was distributed with this source code.
Chris@14 9 */
Chris@14 10
Chris@14 11 namespace SebastianBergmann\ObjectEnumerator;
Chris@14 12
Chris@14 13 use SebastianBergmann\ObjectEnumerator\Fixtures\ExceptionThrower;
Chris@14 14 use PHPUnit\Framework\TestCase;
Chris@14 15
Chris@14 16 /**
Chris@14 17 * @covers SebastianBergmann\ObjectEnumerator\Enumerator
Chris@14 18 */
Chris@14 19 class EnumeratorTest extends TestCase
Chris@14 20 {
Chris@14 21 /**
Chris@14 22 * @var Enumerator
Chris@14 23 */
Chris@14 24 private $enumerator;
Chris@14 25
Chris@14 26 protected function setUp()
Chris@14 27 {
Chris@14 28 $this->enumerator = new Enumerator;
Chris@14 29 }
Chris@14 30
Chris@14 31 public function testEnumeratesSingleObject()
Chris@14 32 {
Chris@14 33 $a = new \stdClass;
Chris@14 34
Chris@14 35 $objects = $this->enumerator->enumerate($a);
Chris@14 36
Chris@14 37 $this->assertCount(1, $objects);
Chris@14 38 $this->assertSame($a, $objects[0]);
Chris@14 39 }
Chris@14 40
Chris@14 41 public function testEnumeratesArrayWithSingleObject()
Chris@14 42 {
Chris@14 43 $a = new \stdClass;
Chris@14 44
Chris@14 45 $objects = $this->enumerator->enumerate([$a]);
Chris@14 46
Chris@14 47 $this->assertCount(1, $objects);
Chris@14 48 $this->assertSame($a, $objects[0]);
Chris@14 49 }
Chris@14 50
Chris@14 51 public function testEnumeratesArrayWithTwoReferencesToTheSameObject()
Chris@14 52 {
Chris@14 53 $a = new \stdClass;
Chris@14 54
Chris@14 55 $objects = $this->enumerator->enumerate([$a, $a]);
Chris@14 56
Chris@14 57 $this->assertCount(1, $objects);
Chris@14 58 $this->assertSame($a, $objects[0]);
Chris@14 59 }
Chris@14 60
Chris@14 61 public function testEnumeratesArrayOfObjects()
Chris@14 62 {
Chris@14 63 $a = new \stdClass;
Chris@14 64 $b = new \stdClass;
Chris@14 65
Chris@14 66 $objects = $this->enumerator->enumerate([$a, $b, null]);
Chris@14 67
Chris@14 68 $this->assertCount(2, $objects);
Chris@14 69 $this->assertSame($a, $objects[0]);
Chris@14 70 $this->assertSame($b, $objects[1]);
Chris@14 71 }
Chris@14 72
Chris@14 73 public function testEnumeratesObjectWithAggregatedObject()
Chris@14 74 {
Chris@14 75 $a = new \stdClass;
Chris@14 76 $b = new \stdClass;
Chris@14 77
Chris@14 78 $a->b = $b;
Chris@14 79 $a->c = null;
Chris@14 80
Chris@14 81 $objects = $this->enumerator->enumerate($a);
Chris@14 82
Chris@14 83 $this->assertCount(2, $objects);
Chris@14 84 $this->assertSame($a, $objects[0]);
Chris@14 85 $this->assertSame($b, $objects[1]);
Chris@14 86 }
Chris@14 87
Chris@14 88 public function testEnumeratesObjectWithAggregatedObjectsInArray()
Chris@14 89 {
Chris@14 90 $a = new \stdClass;
Chris@14 91 $b = new \stdClass;
Chris@14 92
Chris@14 93 $a->b = [$b];
Chris@14 94
Chris@14 95 $objects = $this->enumerator->enumerate($a);
Chris@14 96
Chris@14 97 $this->assertCount(2, $objects);
Chris@14 98 $this->assertSame($a, $objects[0]);
Chris@14 99 $this->assertSame($b, $objects[1]);
Chris@14 100 }
Chris@14 101
Chris@14 102 public function testEnumeratesObjectsWithCyclicReferences()
Chris@14 103 {
Chris@14 104 $a = new \stdClass;
Chris@14 105 $b = new \stdClass;
Chris@14 106
Chris@14 107 $a->b = $b;
Chris@14 108 $b->a = $a;
Chris@14 109
Chris@14 110 $objects = $this->enumerator->enumerate([$a, $b]);
Chris@14 111
Chris@14 112 $this->assertCount(2, $objects);
Chris@14 113 $this->assertSame($a, $objects[0]);
Chris@14 114 $this->assertSame($b, $objects[1]);
Chris@14 115 }
Chris@14 116
Chris@14 117 public function testEnumeratesClassThatThrowsException()
Chris@14 118 {
Chris@14 119 $thrower = new ExceptionThrower();
Chris@14 120
Chris@14 121 $objects = $this->enumerator->enumerate($thrower);
Chris@14 122
Chris@14 123 $this->assertSame($thrower, $objects[0]);
Chris@14 124 }
Chris@14 125
Chris@14 126 public function testExceptionIsRaisedForInvalidArgument()
Chris@14 127 {
Chris@14 128 $this->expectException(InvalidArgumentException::class);
Chris@14 129
Chris@14 130 $this->enumerator->enumerate(null);
Chris@14 131 }
Chris@14 132
Chris@14 133 public function testExceptionIsRaisedForInvalidArgument2()
Chris@14 134 {
Chris@14 135 $this->expectException(InvalidArgumentException::class);
Chris@14 136
Chris@14 137 $this->enumerator->enumerate([], '');
Chris@14 138 }
Chris@14 139 }