package net.sourceforge.mayfly.evaluation.command;
import static net.sourceforge.mayfly.acceptance.SqlTestCase.assertResultSet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import net.sourceforge.mayfly.Database;
import net.sourceforge.mayfly.MayflyException;
import org.junit.Test;
public class RenameTableTest {
@Test
public void changeCase() throws Exception {
Database database = new Database();
database.execute("create table foo(x integer)");
assertEquals(0, database.execute("alter table foo rename to FOO"));
assertResultSet(new String[] { }, database.query("select x from foo"));
}
@Test
public void oldCaseNotSpecifiedExactly() throws Exception {
Database database = new Database();
database.execute("create table foo(x integer)");
assertEquals(0, database.execute("alter table FOO rename to bar"));
assertResultSet(new String[] { }, database.query("select x from bar"));
assertEquals(1, database.tables().size());
}
@Test
public void destinationTableExistsWithDifferentCase() throws Exception {
Database database = new Database();
database.execute("create table foo(x integer)");
database.execute("create table bar(x integer)");
database.tableNamesCaseSensitive(true);
try {
database.execute("alter table foo rename to BAR");
fail();
}
catch (MayflyException e) {
assertEquals("table BAR already exists; cannot rename foo to BAR", e.getMessage());
}
}
}