/** * @depend test_doAdvance * @covers ::onAdvance */ public function test_onAdvance() { // Set up monitors $Called = 0; $Steps = 0; // Valid arguments $this->Compiler->onAdvance(function ($Event) use(&$Called, &$Steps) { $Called++; $Steps = $Event->Steps; }); $this->Compiler->doAdvance(-1); $this->assertEquals(1, $Called, 'Compiler::onAdvance() Failed to register callback'); $this->assertEquals(-1, $Steps, 'Compiler::onAdvance() Failed to register callback'); // Invalid arguments try { $this->Compiler->onAdvance(NULL); $this->fail('Failed to generate exception with invalid arguments'); } catch (InvalidArgumentException $e) { } // No mediator $this->Compiler->clearMediator(); $this->Compiler->onAdvance(function () { }); $this->assertEquals(1, $Called, 'Compiler::onAdvance() Failed to register callback'); }