package com.spotify.heroic.grammar; import com.google.common.collect.ImmutableMap; import com.spotify.heroic.filter.Filter; import com.spotify.heroic.metric.MetricType; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import java.util.Map; import java.util.Optional; import java.util.function.BiFunction; import static org.junit.Assert.assertEquals; @RunWith(MockitoJUnitRunner.class) public class QueryExpressionTest extends AbstractExpressionTest<QueryExpression> { final Optional<Expression> select = Optional.empty(); final Optional<MetricType> source = Optional.empty(); final Optional<RangeExpression> range = Optional.empty(); final Optional<Filter> filter = Optional.empty(); final Map<String, Expression> with = ImmutableMap.of(); final Map<String, Expression> as = ImmutableMap.of(); @Override protected QueryExpression build(final Context ctx) { return new QueryExpression(ctx, select, source, range, filter, with, as); } @Override protected BiFunction<Expression.Visitor<Void>, QueryExpression, Void> visitorMethod() { return Expression.Visitor::visitQuery; } @Test public void testAccessors() { final QueryExpression e = build(); assertEquals(select, e.getSelect()); assertEquals(source, e.getSource()); assertEquals(range, e.getRange()); assertEquals(filter, e.getFilter()); assertEquals(with, e.getWith()); assertEquals(as, e.getAs()); } }