package squill.tree; import static junit.framework.Assert.*; import org.junit.Test; import static squill.functions.Operations.*; import squill.tuple.Tuple2; import squill.query.QueryPart; import squill.tree.QueryPartHandler; import squill.builder.ResultBuilder; import static squill.Squill.squill; import squill.db.Database; import squill.model.CustomerData; import squill.model.CustomerData.CustomerTable; import java.util.Date; public class TraverseTest { @Test public void testSimpleTraverse() { CustomerTable cust = new CustomerTable(); ResultBuilder<Tuple2<String,Date>> result = squill((Database)null) .from(cust) .where(eq(cust.id, 1)) .selectAs(concat(cust.firstName, " ", cust.lastName), cust.birthdate); final StringBuilder sb = new StringBuilder(); result.traverse(new QueryPartHandler<StringBuilder>() { public void handle(final QueryPart queryPart, final StringBuilder sb) { sb.append(queryPart.getClass().getSimpleName()).append("\n"); } }, sb); assertEquals("sql fragments","SelectPart\n" + "BinaryOperatorSelectExpression\n" + "Column\n" + "BinaryOperatorSelectExpression\n" + "\n" + "Column\n" + "Column\n" + "FromPart\n" + "CustomerTable\n" + "Column\n" + "Column\n" + "Column\n" + "Column\n" + "Column\n" + "Column\n" + "Column\n" + "Column\n" + "WherePart\n" + "MultiOperatorBooleanExpression\n" + "Column\n" + "\n" + "OrderByPart\n",sb.toString()); } }