package net.sourceforge.mayfly.evaluation.from;
import junit.framework.TestCase;
import net.sourceforge.mayfly.MayflyException;
import net.sourceforge.mayfly.Options;
import net.sourceforge.mayfly.datastore.DataStore;
import net.sourceforge.mayfly.datastore.Schema;
import net.sourceforge.mayfly.evaluation.ResultRow;
import net.sourceforge.mayfly.evaluation.expression.SingleColumn;
import net.sourceforge.mayfly.evaluation.select.StoreEvaluator;
public class FromTableTest extends TestCase {
public void testCaseSensitiveTableName() throws Exception {
Options options = new Options(true);
DataStore store = new DataStore(
new Schema().createTable("foo", "x"));
try {
new FromTable("Foo", "f")
.dummyRow(
new StoreEvaluator(store,
DataStore.ANONYMOUS_SCHEMA_NAME, options));
fail();
}
catch (MayflyException e) {
assertEquals(
"attempt to refer to table foo as Foo " +
"(with case sensitive table names enabled)",
e.getMessage());
}
}
public void testOptionsPassedToRows() throws Exception {
Options options = new Options(true);
DataStore store = new DataStore(
new Schema().createTable("foo", "x"));
ResultRow dummyRow = new FromTable("foo", "f")
.dummyRow(
new StoreEvaluator(store,
DataStore.ANONYMOUS_SCHEMA_NAME, options));
assertEquals(1, dummyRow.size());
SingleColumn expression = (SingleColumn) dummyRow.expression(0);
assertEquals("f", expression.tableOrAlias());
assertTrue(expression.options.tableNamesCaseSensitive());
}
}