package com.spotify.heroic.grammar;
import org.junit.Test;
import java.util.function.BiFunction;
import static com.spotify.heroic.grammar.Expression.function;
import static com.spotify.heroic.grammar.Expression.list;
import static com.spotify.heroic.grammar.ExpressionTests.biFuncTest;
import static org.junit.Assert.assertEquals;
public class StringExpressionTest extends AbstractExpressionTest<StringExpression> {
private final String value = "hello";
@Override
protected StringExpression build(final Context ctx) {
return new StringExpression(ctx, value);
}
@Override
protected BiFunction<Expression.Visitor<Void>, StringExpression, Void> visitorMethod() {
return Expression.Visitor::visitString;
}
@Test
public void castTest() {
final StringExpression str = build();
assertEquals(list(ctx, str), str.cast(ListExpression.class));
assertEquals(function(ctx, str.getString()), str.cast(FunctionExpression.class));
}
@Test
public void operationsTest() {
biFuncTest(a -> new StringExpression(a, "foo"), b -> new StringExpression(b, "bar"),
r -> new StringExpression(r, "foobar"), StringExpression::add);
}
}