/** * It should run the tests. * * - With 1 iteration, 1 revolution * - With 1 iteration, 4 revolutions * * @dataProvider provideRunner */ public function testRunner($iterations, $revs, array $parameters, $assertionCallbacks) { $subject = new SubjectMetadata($this->benchmark->reveal(), 'name', 0); $subject->setIterations($iterations); $subject->setBeforeMethods(['beforeFoo']); $subject->setParameterSets([[$parameters]]); $subject->setRevs($revs); TestUtil::configureBenchmarkMetadata($this->benchmark); $this->benchmark->getSubjects()->willReturn([$subject]); $this->executor->execute(Argument::type('PhpBench\\Benchmark\\Metadata\\SubjectMetadata'), Argument::type('PhpBench\\Model\\Iteration'), new Config('test', ['executor' => 'microtime']))->shouldBeCalledTimes(count($revs) * array_sum($iterations))->will($this->loadIterationResultCallback()); $suite = $this->runner->run(new RunnerContext(__DIR__, ['context_name' => 'context'])); $this->assertInstanceOf('PhpBench\\Model\\Suite', $suite); $this->assertNoErrors($suite); foreach ($assertionCallbacks as $callback) { $callback($this, $suite); } }