From 71176122872e7d200167cd77d48ed30fda95b3ae Mon Sep 17 00:00:00 2001 From: Laria Carolin Chabowski Date: Tue, 15 Sep 2020 22:21:04 +0200 Subject: Add some unit tests for the parser So far only testing success, we should also test failing parse inputs. --- src/ste/Parser.php | 9 ++++++--- src/ste/TagNode.php | 6 +++++- src/ste/VariableNode.php | 16 +++++++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/ste/Parser.php b/src/ste/Parser.php index a588203..a2f966c 100644 --- a/src/ste/Parser.php +++ b/src/ste/Parser.php @@ -443,12 +443,15 @@ class Parser */ private function parse_var(int $openedat, bool $curly): VariableNode { - $varnode = new VariableNode($this->name, $openedat); - $varnode->name = $this->get_name(); + $varname = $this->get_name(); + + $arrayfields = []; if (!$this->eof()) { - $varnode->arrayfields = $this->parse_array(); + $arrayfields = $this->parse_array(); } + $varnode = new VariableNode($this->name, $openedat, $varname, $arrayfields); + if ($curly && ($this->next() != "}")) { throw new ParseCompileError("Unclosed '\${'", $this->name, $openedat); } diff --git a/src/ste/TagNode.php b/src/ste/TagNode.php index 4adcad8..ce713c0 100644 --- a/src/ste/TagNode.php +++ b/src/ste/TagNode.php @@ -17,10 +17,14 @@ class TagNode extends ASTNode * @param string $tpl * @param int $off * @param string $name + * @param ASTNode[][] $params + * @param ASTNode[] $sub */ - public function __construct(string $tpl, int $off, string $name = "") + public function __construct(string $tpl, int $off, string $name = "", array $params = [], array $sub = []) { parent::__construct($tpl, $off); $this->name = $name; + $this->params = $params; + $this->sub = $sub; } } diff --git a/src/ste/VariableNode.php b/src/ste/VariableNode.php index f5a0b26..cdffc3f 100644 --- a/src/ste/VariableNode.php +++ b/src/ste/VariableNode.php @@ -8,7 +8,21 @@ class VariableNode extends ASTNode public $name; /** @var ASTNode[][] */ - public $arrayfields = []; + public $arrayfields; + + /** + * @param string $tpl + * @param int $off + * @param string $name + * @param ASTNode[][] $arrayfields + */ + public function __construct(string $tpl, int $off, string $name, array $arrayfields) + { + parent::__construct($tpl, $off); + + $this->name = $name; + $this->arrayfields = $arrayfields; + } /** * @return string -- cgit v1.2.3-70-g09d2