public function run($test) { $parser = new SpecificationParser(); $testSpec = $parser->parse($test); $testSpec->setEventDispatcher($this->getEventDispatcher()); try { return $testSpec->run(); } catch (TestExecutionException $e) { $newEx = new TestExecutionException('Test failed: ' . $testSpec->getFile() . ' on line ' . $testSpec->getStartLine() . "\n" . get_class($e) . ': ' . $e->getMessage(), 0, $e); throw $newEx; } }
$res = mkdir($target_dir, '755', true); if ($res == false) { die('could not create gen directory'); } } } checkDirExists($diagram_loc); echo "===========================================\n"; echo "===========================================\n"; foreach ($file_list as $file) { $path_parts = pathinfo($file); $className = $path_parts['filename']; echo "Processing {$className} \n"; $interfaceName = $className . 'State'; $abstractClassName = 'Abstract' . $interfaceName; $parser = new SpecificationParser($file); $operations = $parser->getOperations(); $queries = $parser->getQueries(); $states = $parser->getStates(); $conf_namespace = $parser->getNamespace(); $namespace = $conf_namespace . $className; $use = str_replace('\\', '_', '\\' . $namespace); ob_start(); echo 'digraph ' . $use . ' {' . PHP_EOL; foreach ($states as $state => $data) { foreach ($data['transitions'] as $operation => $to) { echo '"' . $state . '" -> "' . $to . '" [ color=blue, label = "' . $operation . '"];' . PHP_EOL; } } echo '}' . PHP_EOL; $output = ob_get_contents();
} } if ($file_list == false) { echo "Error: your _defs directory is invalid\n"; echo "===========================================\n"; return false; } echo "===========================================\n"; echo "===========================================\n"; foreach ($file_list as $file) { $path_parts = pathinfo($file); $className = $path_parts['filename']; echo "Processing {$className} \n"; $interfaceName = $className . 'State'; $abstractClassName = 'Abstract' . $interfaceName; $parser = new SpecificationParser($file); $conf_namespace = $parser->getNamespace(); $namespace = $conf_namespace . '\\' . $className; $test_namespace = $namespace . '\\test'; // the use string for the test cases $use = '\\' . $namespace . '\\' . $className; $conf_target_dir = $parser->getTargetDir(); $target_dir = $base_dir . '/' . $conf_target_dir . '/' . $className . '/'; $target_test_dir = $target_dir . '/test/'; checkDirExists($target_dir); checkDirExists($target_test_dir); $operations = $parser->getOperations(); $queries = $parser->getQueries(); $states = $parser->getStates(); $generator = new InterfaceGenerator(); $generator->generate($namespace, $operations, $interfaceName, $target_dir);
#!/usr/bin/env php <?php if (!file_exists(__DIR__ . '/../vendor/autoload.php')) { die('You need to set up the project dependencies using the following commands:' . PHP_EOL . 'wget https://getcomposer.org/composer.phar' . PHP_EOL . 'php composer.phar install' . PHP_EOL); } require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/autoload.php'; $parser = new SpecificationParser(new SpecificationFilename()); $className = $parser->getClassName(); $abstractClassName = $parser->getAbstractClassName(); $interfaceName = $parser->getInterfaceClassName(); $operations = $parser->getOperations(); $queries = $parser->getQueries(); $states = $parser->getStates(); $generator = new InterfaceGenerator(); $generator->generate($operations, $interfaceName); $generator = new AbstractStateClassGenerator(); $generator->generate($operations, $abstractClassName, $interfaceName); $generator = new ClassGenerator(); $generator->generate($operations, $states, $className, $interfaceName); $codeGenerator = new StateClassGenerator(); $testGenerator = new TestGenerator(); foreach ($states as $state => $data) { $codeGenerator->generate($data, $state, $abstractClassName); $testGenerator->generate($data, $operations, $queries, $states, $state, $className, $abstractClassName); }