public function testFilenameSetter() { $data = new GeneratorData(uniqid('testSource', true)); $filename = uniqid('testFilename', true); $data->setFilename($filename); $this->assertSame($filename, $data->getFilename()); }
/** * @dataProvider sourceCodeProvider * * @param string $code */ public function testGenerate($code) { $data = new GeneratorData($code); $data->setFilename('testfilename.php'); $this->assertSame(<<<CLASS <?php /** * Filename: testfilename.php */ class testClassName implements \\Oro\\Component\\Layout\\LayoutUpdateInterface { public function updateLayout(\\Oro\\Component\\Layout\\LayoutManipulatorInterface \$layoutManipulator, \\Oro\\Component\\Layout\\LayoutItemInterface \$item) { echo 123; } } CLASS , $this->generator->generate('testClassName', $data)); }
/** * {@inheritdoc} */ protected function prepare(GeneratorData $data, VisitorCollection $visitorCollection) { $source = $data->getSource(); if (is_array($source)) { if (isset($source[self::NODE_ACTIONS])) { // traversing through actions, looking for "@addTree" action $actions = $source[self::NODE_ACTIONS]; foreach ($actions as $nodeNo => $actionDefinition) { // do not validate syntax, error will be thrown afterwards $actionName = is_array($actionDefinition) ? key($actionDefinition) : ''; if (self::ACTION_ADD_TREE === $actionName) { $path = self::NODE_ACTIONS . '.' . $nodeNo; $actionNode = reset($actionDefinition); // looking for items, parent and tree it self if (!isset($actionNode[self::NODE_ITEMS], $actionNode[self::NODE_TREE])) { throw new SyntaxException('expected array with keys "items" and "tree"', $actionDefinition, $path); } $transformedActions = []; $treeParent = key($actionNode[self::NODE_TREE]); $tree = current($actionNode[self::NODE_TREE]); try { $this->processTree($transformedActions, $tree, $treeParent, $actionNode[self::NODE_ITEMS]); } catch (\LogicException $e) { throw new SyntaxException('invalid tree definition. ' . $e->getMessage(), $actionDefinition, $path); } // pre-generate "path" option in order to show correct path if validation error will occur array_walk($transformedActions, function (&$val) use($path) { $val[self::PATH_ATTR] = $path; }); $source[self::NODE_ACTIONS] = array_merge($source[self::NODE_ACTIONS], $transformedActions); // unset processed "@addTree" action unset($source[self::NODE_ACTIONS][$nodeNo]); } } } // apply extensions foreach ($this->extensions as $extension) { $extension->prepare($source, $visitorCollection); } } $data->setSource($source); }