package com.alibaba.druid.bvt.sql.oracle.visitor;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor;
import com.alibaba.druid.sql.parser.SQLParserUtils;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor;
import com.alibaba.druid.util.JdbcUtils;
/**
*
* User: carvin
* Date: 12-11-13
* Time: 下午7:16
* Test OralceOutputVisitor and start with ... connect by parser.
*/
public class OracleOutputVisitorTest_PrettyFormat {
@Test
public void testConnectByParserAndPrettyFormatOutput() {
String sql = "select * from ge_rms_company start with comcode = '00' connect by nocycle prior comcode = uppercomcode";
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, JdbcUtils.ORACLE);
List<SQLStatement> stmtList = parser.parseStatementList();
StringBuilder out = new StringBuilder();
// PrettyFormat use default : true
SQLASTOutputVisitor visitor = new OracleOutputVisitor(out);
for(SQLStatement statement : stmtList) {
statement.accept(visitor);
}
String expectResult = "SELECT *\nFROM ge_rms_company\nSTART WITH comcode = '00'\nCONNECT BY NOCYCLE PRIOR comcode = uppercomcode;\n";
Assert.assertEquals(expectResult, out.toString());
out.setLength(0);
visitor = new OracleOutputVisitor(out);
// setPrettyFormat : false
visitor.setPrettyFormat(false);
for(SQLStatement statement : stmtList) {
statement.accept(visitor);
}
expectResult = "SELECT * FROM ge_rms_company START WITH comcode = '00' CONNECT BY NOCYCLE PRIOR comcode = uppercomcode";
Assert.assertEquals(expectResult, out.toString());
}
}