1<?php 2/* 3 * This file is part of PHPUnit. 4 * 5 * (c) Sebastian Bergmann <sebastian@phpunit.de> 6 * 7 * For the full copyright and license information, please view the LICENSE 8 * file that was distributed with this source code. 9 */ 10 11class CountTest extends PHPUnit_Framework_TestCase 12{ 13 public function testCount() 14 { 15 $countConstraint = new PHPUnit_Framework_Constraint_Count(3); 16 $this->assertTrue($countConstraint->evaluate([1, 2, 3], '', true)); 17 18 $countConstraint = new PHPUnit_Framework_Constraint_Count(0); 19 $this->assertTrue($countConstraint->evaluate([], '', true)); 20 21 $countConstraint = new PHPUnit_Framework_Constraint_Count(2); 22 $it = new TestIterator([1, 2]); 23 24 $this->assertTrue($countConstraint->evaluate($it, '', true)); 25 } 26 27 public function testCountDoesNotChangeIteratorKey() 28 { 29 $countConstraint = new PHPUnit_Framework_Constraint_Count(2); 30 31 // test with 1st implementation of Iterator 32 $it = new TestIterator([1, 2]); 33 34 $countConstraint->evaluate($it, '', true); 35 $this->assertEquals(1, $it->current()); 36 37 $it->next(); 38 $countConstraint->evaluate($it, '', true); 39 $this->assertEquals(2, $it->current()); 40 41 $it->next(); 42 $countConstraint->evaluate($it, '', true); 43 $this->assertFalse($it->valid()); 44 45 // test with 2nd implementation of Iterator 46 $it = new TestIterator2([1, 2]); 47 48 $countConstraint = new PHPUnit_Framework_Constraint_Count(2); 49 $countConstraint->evaluate($it, '', true); 50 $this->assertEquals(1, $it->current()); 51 52 $it->next(); 53 $countConstraint->evaluate($it, '', true); 54 $this->assertEquals(2, $it->current()); 55 56 $it->next(); 57 $countConstraint->evaluate($it, '', true); 58 $this->assertFalse($it->valid()); 59 } 60 61 public function testCountGeneratorsDoNotRewind() 62 { 63 $generatorMaker = new TestGeneratorMaker(); 64 65 $countConstraint = new PHPUnit_Framework_Constraint_Count(3); 66 67 $generator = $generatorMaker->create([1, 2, 3]); 68 $this->assertEquals(1, $generator->current()); 69 $countConstraint->evaluate($generator, '', true); 70 $this->assertEquals(null, $generator->current()); 71 72 $countConstraint = new PHPUnit_Framework_Constraint_Count(2); 73 74 $generator = $generatorMaker->create([1, 2, 3]); 75 $this->assertEquals(1, $generator->current()); 76 $generator->next(); 77 $this->assertEquals(2, $generator->current()); 78 $countConstraint->evaluate($generator, '', true); 79 $this->assertEquals(null, $generator->current()); 80 81 $countConstraint = new PHPUnit_Framework_Constraint_Count(1); 82 83 $generator = $generatorMaker->create([1, 2, 3]); 84 $this->assertEquals(1, $generator->current()); 85 $generator->next(); 86 $this->assertEquals(2, $generator->current()); 87 $generator->next(); 88 $this->assertEquals(3, $generator->current()); 89 $countConstraint->evaluate($generator, '', true); 90 $this->assertEquals(null, $generator->current()); 91 } 92} 93