55-- This Script contains the expression handler for the BooleanExpression.
66
77local Ast = require (" prometheus.ast" );
8+
9+ local expressionEvaluators = {
10+ [Ast .GreaterThanExpression ] = function (left , right )
11+ return left > right
12+ end ,
13+ [Ast .LessThanExpression ] = function (left , right )
14+ return left < right
15+ end ,
16+ [Ast .GreaterThanOrEqualsExpression ] = function (left , right )
17+ return left >= right
18+ end ,
19+ [Ast .LessThanOrEqualsExpression ] = function (left , right )
20+ return left <= right
21+ end ,
22+ [Ast .NotEqualsExpression ] = function (left , right )
23+ return left ~= right
24+ end ,
25+ }
26+
827local function createRandomASTCFlowExpression (resultBool )
928 local expTB = {
1029 Ast .GreaterThanExpression ,
@@ -14,21 +33,12 @@ local function createRandomASTCFlowExpression(resultBool)
1433 Ast .NotEqualsExpression
1534 }
1635
17- local expLookup = {
18- [Ast .GreaterThanExpression ] = " >" ;
19- [Ast .LessThanExpression ] = " <" ;
20- [Ast .GreaterThanOrEqualsExpression ] = " >=" ;
21- [Ast .LessThanOrEqualsExpression ] = " <=" ;
22- [Ast .NotEqualsExpression ] = " ~=" ;
23- }
24-
25- local leftInt , rightInt , boolResult , r3 , randomExp
36+ local leftInt , rightInt , boolResult , randomExp
2637 repeat
2738 randomExp = expTB [math.random (1 , # expTB )]
2839 leftInt = Ast .NumberExpression (math.random (1 , 2 ^ 24 ))
2940 rightInt = Ast .NumberExpression (math.random (1 , 2 ^ 24 ))
30- r3 = " return " .. leftInt .value .. expLookup [randomExp ] .. rightInt .value
31- boolResult = loadstring (r3 )()
41+ boolResult = expressionEvaluators [randomExp ](leftInt .value , rightInt .value )
3242 until boolResult == resultBool
3343
3444 return randomExp (leftInt , rightInt , false )
@@ -47,4 +57,3 @@ return function(self, expression, _, numReturns)
4757 end
4858 return regs ;
4959end ;
50-
0 commit comments