use of org.apache.metron.stellar.dsl.Token in project metron by apache.
the class StellarCompilerTest method exitIntLiteralShouldProperlyParseStringsAsIntegers.
@Test
public void exitIntLiteralShouldProperlyParseStringsAsIntegers() throws Exception {
StellarParser.IntLiteralContext ctx = mock(StellarParser.IntLiteralContext.class);
Token result = mock(Token.class);
when(ctx.getText()).thenReturn("1000");
when(numberLiteralEvaluator.evaluate(ctx, null)).thenReturn(result);
compiler.exitIntLiteral(ctx);
verify(numberLiteralEvaluator).evaluate(ctx, null);
Assert.assertEquals(1, tokenStack.size());
Assert.assertEquals(tokenStack.getFirst(), result);
verifyZeroInteractions(variableResolver);
verifyZeroInteractions(functionResolver);
verifyZeroInteractions(context);
verifyZeroInteractions(arithmeticEvaluator);
verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
}
use of org.apache.metron.stellar.dsl.Token in project metron by apache.
the class StellarCompilerTest method exitFloatLiteralShouldProperlyParseStringsAsFloats.
@Test
public void exitFloatLiteralShouldProperlyParseStringsAsFloats() throws Exception {
StellarParser.FloatLiteralContext ctx = mock(StellarParser.FloatLiteralContext.class);
when(ctx.getText()).thenReturn("1000f");
Token result = mock(Token.class);
when(numberLiteralEvaluator.evaluate(ctx, null)).thenReturn(result);
compiler.exitFloatLiteral(ctx);
verify(numberLiteralEvaluator).evaluate(ctx, null);
Assert.assertEquals(1, tokenStack.size());
Assert.assertEquals(tokenStack.getFirst(), result);
verifyZeroInteractions(variableResolver);
verifyZeroInteractions(functionResolver);
verifyZeroInteractions(context);
verifyZeroInteractions(arithmeticEvaluator);
verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
}
use of org.apache.metron.stellar.dsl.Token in project metron by apache.
the class StellarCompiler method exitVariable.
@Override
public void exitVariable(StellarParser.VariableContext ctx) {
final FrameContext.Context context = getArgContext();
expression.tokenDeque.push(new Token<>((tokenDeque, state) -> {
String varName = ctx.getText();
if (state.context.getActivityType().equals(ActivityType.PARSE_ACTIVITY) && !state.variableResolver.exists(varName)) {
// when parsing, missing variables are an error!
throw new ParseException(String.format("variable: %s is not defined", varName));
}
tokenDeque.push(new Token<>(state.variableResolver.resolve(varName), Object.class, context));
}, DeferredFunction.class, context));
expression.variablesUsed.add(ctx.getText());
}
use of org.apache.metron.stellar.dsl.Token in project metron by apache.
the class StellarCompilerTest method exitLongLiteralShouldProperlyParseStringsAsLongs.
@Test
public void exitLongLiteralShouldProperlyParseStringsAsLongs() throws Exception {
StellarParser.LongLiteralContext ctx = mock(StellarParser.LongLiteralContext.class);
when(ctx.getText()).thenReturn("1000l");
Token result = mock(Token.class);
when(numberLiteralEvaluator.evaluate(ctx, null)).thenReturn(result);
compiler.exitLongLiteral(ctx);
verify(numberLiteralEvaluator).evaluate(ctx, null);
Assert.assertEquals(1, tokenStack.size());
Assert.assertEquals(tokenStack.getFirst(), result);
verifyZeroInteractions(variableResolver);
verifyZeroInteractions(functionResolver);
verifyZeroInteractions(context);
verifyZeroInteractions(arithmeticEvaluator);
verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
}
use of org.apache.metron.stellar.dsl.Token in project metron by apache.
the class StellarCompilerTest method properlyCompareTwoNumbers.
@Test
public void properlyCompareTwoNumbers() throws Exception {
StellarParser.ComparisonExpressionWithOperatorContext ctx = mock(StellarParser.ComparisonExpressionWithOperatorContext.class);
StellarParser.ComparisonOpContext mockOp = mock(StellarParser.ComparisonOpContext.class);
when(ctx.comp_operator()).thenReturn(mockOp);
Token result = mock(Token.class);
when(comparisonExpressionWithOperatorEvaluator.evaluate(any(Token.class), any(Token.class), any(StellarParser.ComparisonOpContext.class), any())).thenReturn(result);
compiler.exitComparisonExpressionWithOperator(ctx);
Assert.assertEquals(1, tokenStack.size());
StellarCompiler.DeferredFunction func = (StellarCompiler.DeferredFunction) tokenStack.pop().getValue();
tokenStack.push(new Token<>(1000, Integer.class, null));
tokenStack.push(new Token<>(1500f, Float.class, null));
func.apply(tokenStack, new StellarCompiler.ExpressionState(context, functionResolver, variableResolver));
Assert.assertEquals(1, tokenStack.size());
Assert.assertEquals(tokenStack.getFirst(), result);
verify(comparisonExpressionWithOperatorEvaluator).evaluate(any(Token.class), any(Token.class), eq(mockOp), any());
verifyZeroInteractions(numberLiteralEvaluator);
verifyZeroInteractions(variableResolver);
verifyZeroInteractions(functionResolver);
verifyZeroInteractions(context);
verifyZeroInteractions(arithmeticEvaluator);
}
Aggregations