package net.sourceforge.mayfly.evaluation.what; import junit.framework.TestCase; import net.sourceforge.mayfly.datastore.NullCell; import net.sourceforge.mayfly.evaluation.ResultRow; import net.sourceforge.mayfly.evaluation.expression.SingleColumn; import net.sourceforge.mayfly.evaluation.expression.literal.IntegerLiteral; import net.sourceforge.mayfly.util.MayflyAssert; public class WhatTest extends TestCase { public void testSelected() throws Exception { What original = new What() .with(new SingleColumn("a")) .with(new AllColumnsFromTable("foo")) .with(new SingleColumn("bar", "b")); ResultRow dummyRow = new ResultRow() .withColumn("bar", "a", NullCell.INSTANCE) .withColumn("bar", "aa", NullCell.INSTANCE) .withColumn("bar", "b", NullCell.INSTANCE) .withColumn("bar", "c", NullCell.INSTANCE) .withColumn("foo", "x", NullCell.INSTANCE) .withColumn("foo", "y", NullCell.INSTANCE) ; Selected selected = original.selected(dummyRow); assertEquals(4, selected.size()); MayflyAssert.assertColumn("bar", "a", selected.element(0)); // Or null, "a" MayflyAssert.assertColumn("foo", "x", selected.element(1)); MayflyAssert.assertColumn("foo", "y", selected.element(2)); MayflyAssert.assertColumn("bar", "b", selected.element(3)); } public void testSelectedDegenerateCase() throws Exception { What original = new What().with(new IntegerLiteral(7)); Selected selected = original.selected(new ResultRow()); assertEquals(1, selected.size()); IntegerLiteral element = (IntegerLiteral) selected.element(0); assertEquals(7, element.value); } public void testSelectedAll() throws Exception { What original = new What() .with(new All()); ResultRow dummyRow = new ResultRow() .withColumn("bar", "a", NullCell.INSTANCE) .withColumn("bar", "b", NullCell.INSTANCE) .withColumn("foo", "x", NullCell.INSTANCE) .withColumn("foo", "y", NullCell.INSTANCE) ; Selected selected = original.selected(dummyRow); assertEquals(4, selected.size()); MayflyAssert.assertColumn("bar", "a", selected.element(0)); MayflyAssert.assertColumn("bar", "b", selected.element(1)); MayflyAssert.assertColumn("foo", "x", selected.element(2)); MayflyAssert.assertColumn("foo", "y", selected.element(3)); } public void testLookUpAlias() throws Exception { What what = new What( new AliasedExpression("john_smith", new SingleColumn("b")) ); assertNull(what.lookupAlias("a")); assertNull(what.lookupAlias("b")); SingleColumn aliasee = (SingleColumn) what.lookupAlias("john_smith"); assertEquals("b", aliasee.columnName()); } }