/*
* Copyright 20010 Dennis Butterstein, Ralf Joachim
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.castor.cpa.persistence.sql.query;
import org.castor.cpa.persistence.sql.query.condition.Compare;
import org.castor.cpa.persistence.sql.query.condition.CompareOperator;
import org.castor.cpa.persistence.sql.query.expression.Column;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Test if Join works as expected.
*
* @author <a href="mailto:madsheepscarer AT googlemail DOT com">Dennis Butterstein</a>
* @author <a href="mailto:ralf DOT joachim AT syscon DOT eu">Ralf Joachim</a>
* @version $Revision$ $Date: 2009-07-13 17:22:43 (Mon, 13 Jul 2009) $
*/
public final class TestJoin {
@Test
public void testToString() {
Join join = null;
Table table = new Table("test");
Table table2 = new Table("test2");
Table table3 = new Table("test3");
TableAlias tableAlias = new TableAlias(table, "testAlias");
TableAlias tableAlias2 = new TableAlias(table2, "testAlias2");
Compare compare =
new Compare(new Column("column1"), CompareOperator.EQ, new Column("column2"));
JoinOperator joinOper = JoinOperator.FULL;
try {
join = new Join(joinOper, table);
assertEquals(join.getJoin(), table);
assertEquals(join.getOperator(), joinOper);
assertEquals(join.getCondition(), null);
assertEquals("FULL JOIN test", join.toString());
} catch (Exception ex) {
fail("should not throw exception");
}
try {
join = new Join(joinOper, tableAlias);
assertEquals(join.getJoin(), tableAlias);
assertEquals(join.getOperator(), joinOper);
assertEquals(join.getCondition(), null);
assertEquals("FULL JOIN test testAlias", join.toString());
} catch (Exception ex) {
fail("should not throw exception");
}
try {
join = new Join(joinOper, table);
table.addLeftJoin(tableAlias);
assertEquals(join.getJoin(), table);
assertEquals(join.getOperator(), joinOper);
assertEquals(join.getCondition(), null);
assertEquals("FULL JOIN (test LEFT JOIN test testAlias)", join.toString());
} catch (Exception ex) {
fail("should not throw exception");
}
try {
table = new Table("test");
join = new Join(joinOper, table, compare);
table.addLeftJoin(tableAlias);
table.addRightJoin(tableAlias2);
assertEquals(join.getJoin(), table);
assertEquals(join.getOperator(), joinOper);
assertEquals(join.getCondition(), compare);
assertEquals("FULL JOIN ((test LEFT JOIN test testAlias) RIGHT JOIN test2 testAlias2) "
+ "ON column1=column2", join.toString());
} catch (Exception ex) {
fail("should not throw exception");
}
try {
tableAlias = new TableAlias(table, "testAlias");
tableAlias2 = new TableAlias(table2, "testAlias2");
table = new Table("test");
join = new Join(joinOper, table, compare);
table.addRightJoin(tableAlias2);
tableAlias2.addLeftJoin(tableAlias);
tableAlias.addFullJoin(table3);
assertEquals(join.getJoin(), table);
assertEquals(join.getOperator(), joinOper);
assertEquals(join.getCondition(), compare);
assertEquals("FULL JOIN (test RIGHT JOIN (test2 testAlias2 LEFT JOIN "
+ "(test testAlias FULL JOIN test3))) ON column1=column2", join.toString());
} catch (Exception ex) {
fail("should not throw exception");
}
try {
Table table4 = new Table("tab4");
Table table5 = new Table("tab5");
Table table6 = new Table("tab6");
table = new Table("test");
join = new Join(joinOper, table, compare);
table.addRightJoin(table4);
table.addLeftJoin(table5);
table5.addFullJoin(table6);
assertEquals(join.getJoin(), table);
assertEquals(join.getOperator(), joinOper);
assertEquals(join.getCondition(), compare);
assertEquals("FULL JOIN ((test RIGHT JOIN tab4) LEFT JOIN (tab5 FULL JOIN tab6)) "
+ "ON column1=column2", join.toString());
} catch (Exception ex) {
fail("should not throw exception");
}
}
}