/**
  * The test runner
  */
 public function index()
 {
     if (!$this->hasRequestParameter('LinearTestCompilation')) {
         throw new \common_exception_MissingParameter('LinearTestCompilation');
     }
     // get current state
     $stateString = $this->getState();
     if (is_null($stateString)) {
         $execution = TestExecutionState::initNew($this->getServiceCallId(), $this->getRequestParameter('LinearTestCompilation'));
         $this->setState($execution->toString());
     } else {
         $execution = TestExecutionState::fromString($stateString);
     }
     $this->setData('itemServiceApi', $this->buildItemScript($execution));
     $this->setData('previous', $execution->hasPrevious());
     $this->setData('client_config_url', $this->getClientConfigUrl());
     $this->setData('client_timeout', $this->getClientTimeout());
     $this->setView('TestRunner/index.tpl');
 }
 public function testToString()
 {
     $testExecutionId = 'myTestId';
     $compilationId = 'myCompilationId';
     $this->testRunnerService->expects($this->once())->method('getItemData')->with($compilationId)->willReturn(array('myFirstKey'));
     $execution = TestExecutionState::initNew($testExecutionId, $compilationId);
     $string = json_encode(array('testExecutionId' => $testExecutionId, 'compilationId' => $compilationId, 'current' => 0, 'itemExecutions' => array(array('itemIndex' => 0, 'callId' => $testExecutionId . '_0'))));
     $this->assertEquals($string, $execution->toString());
 }