package net.sf.jsqlparser.util.deparser;
import static org.junit.Assert.assertTrue;
import static org.mockito.BDDMockito.then;
import static org.mockito.Mockito.mock;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.ExpressionVisitor;
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
import net.sf.jsqlparser.statement.execute.Execute;
public class ExecuteDeParserTest {
private ExecuteDeParser executeDeParser;
@Mock
private ExpressionVisitor expressionVisitor;
private StringBuilder buffer;
@Before
public void setUp() {
buffer = new StringBuilder();
executeDeParser = new ExecuteDeParser(expressionVisitor, buffer);
}
@Test
public void shouldDeParseExecute() {
Execute execute = new Execute();
String name = "name";
ExpressionList exprList = new ExpressionList();
List<Expression> expressions = new ArrayList<Expression>();
Expression expression1 = mock(Expression.class);
Expression expression2 = mock(Expression.class);
execute.setName(name);
execute.setExprList(exprList);
exprList.setExpressions(expressions);
expressions.add(expression1);
expressions.add(expression2);
executeDeParser.deParse(execute);
String actual = buffer.toString();
assertTrue(actual.matches("EXECUTE " + name + " .*?, .*"));
}
@Test
public void shouldUseProvidedExpressionVisitorWhenDeParsingExecute() {
Execute execute = new Execute();
String name = "name";
ExpressionList exprList = new ExpressionList();
List<Expression> expressions = new ArrayList<Expression>();
Expression expression1 = mock(Expression.class);
Expression expression2 = mock(Expression.class);
execute.setName(name);
execute.setExprList(exprList);
exprList.setExpressions(expressions);
expressions.add(expression1);
expressions.add(expression2);
executeDeParser.deParse(execute);
then(expression1).should().accept(expressionVisitor);
then(expression2).should().accept(expressionVisitor);
}
}