package jef.database.jsqlparser.test.replace;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import jef.database.jsqlparser.expression.Column;
import jef.database.jsqlparser.expression.JpqlParameter;
import jef.database.jsqlparser.expression.LongValue;
import jef.database.jsqlparser.expression.StringValue;
import jef.database.jsqlparser.expression.operators.relational.ExpressionList;
import jef.database.jsqlparser.parser.ParseException;
import jef.database.jsqlparser.statement.replace.Replace;
import jef.database.jsqlparser.statement.select.SubSelect;
import org.junit.Test;
public class ReplaceTest {
@Test
public void testReplaceSyntax1() throws ParseException {
String statement = "REPLACE mytable SET col1='as', col2=?1, col3=565";
Replace replace = (Replace) jef.database.DbUtils.parseStatement(statement);
assertEquals("mytable", replace.getTable().getName());
assertEquals(3, replace.getColumns().size());
assertEquals("col1", ((Column) replace.getColumns().get(0)).getColumnName());
assertEquals("col2", ((Column) replace.getColumns().get(1)).getColumnName());
assertEquals("col3", ((Column) replace.getColumns().get(2)).getColumnName());
assertEquals("as", ((StringValue)replace.getExpressions().get(0)).getValue());
assertTrue(replace.getExpressions().get(1) instanceof JpqlParameter);
assertEquals(565, ((LongValue)replace.getExpressions().get(2)).getValue().longValue());
assertEquals(statement, ""+replace);
}
@Test
public void testReplaceSyntax2() throws ParseException {
String statement = "REPLACE mytable (col1,col2,col3) VALUES ('as',?1,565)";
Replace replace = (Replace) jef.database.DbUtils.parseStatement(statement);
assertEquals("mytable", replace.getTable().getName());
assertEquals(3, replace.getColumns().size());
assertEquals("col1", ((Column) replace.getColumns().get(0)).getColumnName());
assertEquals("col2", ((Column) replace.getColumns().get(1)).getColumnName());
assertEquals("col3", ((Column) replace.getColumns().get(2)).getColumnName());
assertEquals("as", ((StringValue) ((ExpressionList)replace.getItemsList()).getExpressions().get(0)).getValue());
assertTrue(((ExpressionList)replace.getItemsList()).getExpressions().get(1) instanceof JpqlParameter);
assertEquals(565, ((LongValue) ((ExpressionList)replace.getItemsList()).getExpressions().get(2)).getValue().longValue());
assertEquals(statement, ""+replace);
}
@Test
public void testReplaceSyntax3() throws ParseException {
String statement = "REPLACE mytable (col1, col2, col3) SELECT * FROM mytable3";
Replace replace = (Replace) jef.database.DbUtils.parseStatement(statement);
assertEquals("mytable", replace.getTable().getName());
assertEquals(3, replace.getColumns().size());
assertEquals("col1", ((Column) replace.getColumns().get(0)).getColumnName());
assertEquals("col2", ((Column) replace.getColumns().get(1)).getColumnName());
assertEquals("col3", ((Column) replace.getColumns().get(2)).getColumnName());
assertTrue(replace.getItemsList() instanceof SubSelect);
//TODO:
//assertEquals(statement, ""+replace);
}
}