classLemonCondition
final class LemonCondition
Evaluates the named boolean conditions used by Lemon's preprocess_input. tool/lemon.c short-circuits a sequence from left to right; parentheses provide grouping.
Methods§
public function __construct(private list<string> $defines = [])Parameters
$defines | list<string> | Names passed as Lemon -D definitions |
Test cases 8
LemonConditionTest::testEvaluateRejectsEmptyConditionscoversLemonConditionTest::testEvaluateRejectsUnparsedTrailingTextcoversLemonConditionTest::testEvaluateUsesDeclaredNamesAndLemonOperatorGroupingcoversLemonConditionTest::testExpressionRejectsUnknownOperatorscoversLemonConditionTest::testExpressionStopsAtTheMatchingParenthesiscoversLemonConditionTest::testTermReadsNestedNegationAndAdvancesOverItsClosingParenthesiscoversLemonConditionTest::testTermRejectsAnUnclosedGroupcoversLemonConditionTest::testTermRejectsNonIdentifierInputcovers
public function evaluate(string $condition): boolEvaluates a condition without executing host-language code or consulting process environment.
Parameters
$condition | string |
Returns
boolThrows
RuntimeException When a condition is malformedTest cases 3
LemonConditionTest::testEvaluateRejectsEmptyConditionscovers and callsLemonConditionTest::testEvaluateRejectsUnparsedTrailingTextcovers and callsLemonConditionTest::testEvaluateUsesDeclaredNamesAndLemonOperatorGroupingcovers and calls
Called from 1
public function expression(list<string> $tokens, int &$offset): boolMirrors Lemon's short-circuit grouping for mixed operators, without C precedence assumptions.
Parameters
$tokens | list<string> | |
$offset | int |
Returns
boolThrows
RuntimeException When a condition is malformedTest cases 6
LemonConditionTest::testEvaluateRejectsUnparsedTrailingTextcoversLemonConditionTest::testEvaluateUsesDeclaredNamesAndLemonOperatorGroupingcoversLemonConditionTest::testExpressionRejectsUnknownOperatorscovers and callsLemonConditionTest::testExpressionStopsAtTheMatchingParenthesiscovers and callsLemonConditionTest::testTermReadsNestedNegationAndAdvancesOverItsClosingParenthesiscoversLemonConditionTest::testTermRejectsAnUnclosedGroupcovers
Called from 3
- method-call SqlFaker\Compiler\Lemon\LemonCondition::evaluate() packages/sql-faker/src/Compiler/Lemon/LemonCondition.php:33
- method-call SqlFaker\Compiler\Lemon\LemonCondition::expression() packages/sql-faker/src/Compiler/Lemon/LemonCondition.php:56
- method-call SqlFaker\Compiler\Lemon\LemonCondition::term() packages/sql-faker/src/Compiler/Lemon/LemonCondition.php:72
Calls 3
- method-call LemonCondition::term() line 47
- new
RuntimeExceptionline 53 - method-call LemonCondition::expression() line 56
public function term(list<string> $tokens, int &$offset): boolReads a name, negation or parenthesized condition.
Parameters
$tokens | list<string> | |
$offset | int |
Returns
boolThrows
RuntimeException When a term or its closing parenthesis is missingTest cases 7
LemonConditionTest::testEvaluateRejectsUnparsedTrailingTextcoversLemonConditionTest::testEvaluateUsesDeclaredNamesAndLemonOperatorGroupingcoversLemonConditionTest::testExpressionRejectsUnknownOperatorscoversLemonConditionTest::testExpressionStopsAtTheMatchingParenthesiscoversLemonConditionTest::testTermReadsNestedNegationAndAdvancesOverItsClosingParenthesiscovers and callsLemonConditionTest::testTermRejectsAnUnclosedGroupcovers and callsLemonConditionTest::testTermRejectsNonIdentifierInputcovers and calls
Called from 2
Calls 5
- method-call LemonCondition::term() line 69
- method-call LemonCondition::expression() line 72
- new
RuntimeExceptionline 74 - function-call
preg_matchline 78 - function-call
in_arrayline 81
Private surface 1§
Implementation details, listed for orientation only.
private list<string> $defines = []Test cases 11§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 8
LemonConditionTest::testEvaluateRejectsEmptyConditionscovers and callsLemonConditionTest::testEvaluateRejectsUnparsedTrailingTextcovers and callsLemonConditionTest::testEvaluateUsesDeclaredNamesAndLemonOperatorGroupingcovers and callsLemonConditionTest::testExpressionRejectsUnknownOperatorscovers and callsLemonConditionTest::testExpressionStopsAtTheMatchingParenthesiscovers and callsLemonConditionTest::testTermReadsNestedNegationAndAdvancesOverItsClosingParenthesiscovers and callsLemonConditionTest::testTermRejectsAnUnclosedGroupcovers and callsLemonConditionTest::testTermRejectsNonIdentifierInputcovers and calls