Author: doogie
Date: Sun May 30 22:07:10 2010 New Revision: 949609 URL: http://svn.apache.org/viewvc?rev=949609&view=rev Log: Use the new equals implementations to test for a correct parse; also test all the statements. Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/SQLTest.java Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/SQLTest.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/SQLTest.java?rev=949609&r1=949608&r2=949609&view=diff ============================================================================== --- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/SQLTest.java (original) +++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/SQLTest.java Sun May 30 22:07:10 2010 @@ -29,15 +29,37 @@ import javolution.util.FastMap; import junit.framework.TestCase; +import org.ofbiz.sql.BetweenCondition; +import org.ofbiz.sql.BooleanCondition; import org.ofbiz.sql.Condition; +import org.ofbiz.sql.ConditionList; +import org.ofbiz.sql.CountFunction; import org.ofbiz.sql.FieldAll; import org.ofbiz.sql.FieldDef; import org.ofbiz.sql.FieldValue; import org.ofbiz.sql.FunctionCall; +import org.ofbiz.sql.InsertValues; +import org.ofbiz.sql.InsertRow; +import org.ofbiz.sql.Joined; +import org.ofbiz.sql.Joiner; +import org.ofbiz.sql.KeyMap; +import org.ofbiz.sql.ListCondition; import org.ofbiz.sql.MathValue; +import org.ofbiz.sql.NumberValue; +import org.ofbiz.sql.OrderByItem; +import org.ofbiz.sql.ParameterValue; import org.ofbiz.sql.Parser; +import org.ofbiz.sql.Relation; +import org.ofbiz.sql.SetField; +import org.ofbiz.sql.SQLDelete; +import org.ofbiz.sql.SQLInsert; import org.ofbiz.sql.SQLSelect; import org.ofbiz.sql.SQLStatement; +import org.ofbiz.sql.SQLUpdate; +import org.ofbiz.sql.SQLView; +import org.ofbiz.sql.StringValue; +import org.ofbiz.sql.Table; +import org.ofbiz.sql.TableName; import org.ofbiz.sql.Value; import org.ofbiz.base.test.GenericTestCaseBase; @@ -54,102 +76,191 @@ public class SQLTest extends GenericTest } Iterator<SQLStatement<?>> stmtIt = statements.iterator(); assertTrue("has more statements", stmtIt.hasNext()); + { + SQLSelect select = new SQLSelect( + false, + list( + new FieldAll("a", Collections.<String>emptySet()), + new FieldAll("b", set("partyId")), + new FieldAll("c", set("partyId")) + ), + GenericTestCaseBase.<String, FieldDef>map( + "roleTypeId", new FieldDef(new FieldValue("d", "roleTypeId"), null), + "roleDescription", new FieldDef(new FieldValue("d", "description"), "roleDescription"), + "SUM", new FieldDef(new FunctionCall("SUM", GenericTestCaseBase.<Value>list(new FieldValue("a", "partyId"))), null), + "baz", new FieldDef(new FunctionCall("FOO", GenericTestCaseBase.<Value>list(new FieldValue("a", "partyId"), new NumberValue<Integer>(Integer.valueOf(1)))), "baz"), + "one", new FieldDef(new MathValue("||", list(new FieldValue("a", "partyId"), new StringValue("-"), new FieldValue("a", "partyTypeId"))), "one"), + "cnt1", new FieldDef(new CountFunction(false, new FieldValue("a", "partyId")), "cnt1"), + "cnt2", new FieldDef(new CountFunction(false, new FieldValue(null, "partyId")), "cnt2"), + "cnt3", new FieldDef(new CountFunction(true, new FieldValue("a", "partyId")), "cnt3") + ), + new Table( + new TableName("Party", "a"), + new Joined(true, new TableName("Person", "b"), list(new KeyMap("partyId", "partyId")), + new Joined(true, new TableName("PartyGroup", "c"), list(new KeyMap("partyId", "partyId")), + new Joined(false, new TableName("PartyRole", "d"), list(new KeyMap("partyId", "partyId"), new KeyMap("partyId", "partyId"))) + ) + ) + ), + GenericTestCaseBase.<String, Relation>map( + "MainAPerson", new Relation("one", "MainA", "Person", list(new KeyMap("partyId", "partyId"))), + "MainBPerson", new Relation(null, "MainB", "Person", list(new KeyMap("partyId", "partyId"))), + "Person", new Relation("one", null, "Person", list(new KeyMap("partyId", "partyId"))), + "PartyGroup", new Relation(null, null, "PartyGroup", list(new KeyMap("partyId", "partyId"))) + ), + new ConditionList( + Joiner.OR, + GenericTestCaseBase.<Condition>list( + new ConditionList( + Joiner.AND, + list( + new BooleanCondition(new FieldValue("a", "partyTypeId"), "=", new StringValue("PERSON")), + new BooleanCondition(new FieldValue("b", "lastName"), "LIKE", new ParameterValue("lastName")), + new BetweenCondition(new FieldValue("b", "birthDate"), new StringValue("1974-12-01"), new StringValue("1974-12-31")) + ) + ), + new ConditionList( + Joiner.AND, + list( + new ListCondition(new FieldValue("b", "partyId"), "IN", GenericTestCaseBase.<Value>list( + new StringValue("1"), + new StringValue("2"), + new StringValue("3"), + new StringValue("4") + )), + new BooleanCondition(new FieldValue("b", "gender"), "=", new StringValue("M")) + ) + ) + ) + ), + new BooleanCondition(new FieldValue("b", "firstName"), "LIKE", new StringValue("%foo%")), + null, + list( + new OrderByItem(OrderByItem.Order.DEFAULT, "LOWER", "lastName"), + new OrderByItem(OrderByItem.Order.DEFAULT, null, "firstName"), + new OrderByItem(OrderByItem.Order.DESCENDING, null, "birthDate") + ), + 5, + 10 + ); SQLStatement stmt = stmtIt.next(); - assertTrue("is select", stmt instanceof SQLSelect); - SQLSelect select = (SQLSelect) stmt; - Iterator<FieldAll> fieldAllIt = select.getFieldAlls().iterator(); - - assertTrue("has first field all", fieldAllIt.hasNext()); - FieldAll fieldAll = fieldAllIt.next(); - assertEquals("first fieldAll.alias", "a", fieldAll.getAlias()); - assertEquals("no excludes", GenericTestCaseBase.<FieldAll>set(), set(fieldAll)); - - assertTrue("has second field all", fieldAllIt.hasNext()); - fieldAll = fieldAllIt.next(); - assertEquals("first fieldAll.alias", "b", fieldAll.getAlias()); - assertEquals("no excludes", set("partyId"), set(fieldAll)); - - assertTrue("has third field all", fieldAllIt.hasNext()); - fieldAll = fieldAllIt.next(); - assertEquals("first fieldAll.alias", "c", fieldAll.getAlias()); - assertEquals("no excludes", set("partyId"), set(fieldAll)); - - assertFalse("has no more field all", fieldAllIt.hasNext()); - - Iterator<FieldDef> fieldDefIt = select.getFieldDefs().iterator(); - - assertTrue("has first field def", fieldDefIt.hasNext()); - FieldDef fieldDef = fieldDefIt.next(); - assertEquals("first fieldDef.alias", "roleTypeId", fieldDef.getAlias()); - assertTrue("first is FieldDef", fieldDef instanceof FieldDef); - FieldDef fdfv = (FieldDef) fieldDef; - assertTrue("first has FieldValue", fdfv.getValue() instanceof FieldValue); - FieldValue fv = (FieldValue) fdfv.getValue(); - assertEquals("first fieldDef.tableName", "d", fv.getTableName()); - assertEquals("first fieldDef.fieldName", "roleTypeId", fv.getFieldName()); - assertEquals("first fieldDef.defaultName", "roleTypeId", fv.getDefaultName()); - - assertTrue("has second field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("second fieldDef.alias", "roleDescription", fieldDef.getAlias()); - assertTrue("second is FieldDef", fieldDef instanceof FieldDef); - fdfv = (FieldDef) fieldDef; - assertTrue("second has FieldValue", fdfv.getValue() instanceof FieldValue); - fv = (FieldValue) fdfv.getValue(); - assertEquals("second fieldDef.tableName", "d", fv.getTableName()); - assertEquals("second fieldDef.fieldName", "description", fv.getFieldName()); - assertEquals("second fieldDef.defaultName", "description", fv.getDefaultName()); - - assertTrue("has third field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("third fieldDef.alias", "SUM", fieldDef.getAlias()); - assertTrue("third is FieldDef", fieldDef instanceof FieldDef); - FieldDef fd = (FieldDef) fieldDef; - assertTrue("third fieldDefValue.staticValue is FunctionCall", fd.getValue() instanceof FunctionCall); - FunctionCall fc = (FunctionCall) fd.getValue(); - assertEquals("third arg count", 1, fc.getArgCount()); - Iterator<Value> valueIt = fc.iterator(); - assertTrue("third args hasNext", valueIt.hasNext()); - Value argValue = valueIt.next(); - assertTrue("third first arg is FieldValue", argValue instanceof FieldValue); - FieldValue fieldValue = (FieldValue) argValue; - assertEquals("third first arg tableName", "a", fieldValue.getTableName()); - assertEquals("third first arg fieldName", "partyId", fieldValue.getFieldName()); - assertFalse("third no more args", valueIt.hasNext()); - - assertTrue("has fourth field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("fourth fieldDef.alias", "baz", fieldDef.getAlias()); - assertTrue("fourth is FieldDef", fieldDef instanceof FieldDef); - fd = (FieldDef) fieldDef; - - assertTrue("has fifth field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("fifth fieldDef.alias", "one", fieldDef.getAlias()); - assertTrue("fifth is FieldDef", fieldDef instanceof FieldDef); - fd = (FieldDef) fieldDef; - - assertTrue("has sixth field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("sixth fieldDef.alias", "cnt1", fieldDef.getAlias()); - assertTrue("sixth is FieldDef", fieldDef instanceof FieldDef); - fd = (FieldDef) fieldDef; - - assertTrue("has seventh field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("seventh fieldDef.alias", "cnt2", fieldDef.getAlias()); - assertTrue("seventh is FieldDef", fieldDef instanceof FieldDef); - fd = (FieldDef) fieldDef; - - assertTrue("has eighth field def", fieldDefIt.hasNext()); - fieldDef = fieldDefIt.next(); - assertEquals("eighth fieldDef.alias", "cnt3", fieldDef.getAlias()); - assertTrue("eighth is FieldDef", fieldDef instanceof FieldDef); - fd = (FieldDef) fieldDef; - - assertFalse("has no more field def", fieldDefIt.hasNext()); - + assertEquals("firstSelect", select, stmt); + } + { + SQLInsert insert = new SQLInsert( + new TableName("Party", null), + new InsertValues( + list( + new InsertRow(GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("PERSON"), new StringValue("PARTY_DISABLED"))), + new InsertRow(list(new NumberValue<Integer>(Integer.valueOf(5)), new StringValue("PARTY_GROUP"), new ParameterValue("name"))) + ) + ), + list("partyId", "partyTypeId", "statusId") + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("firstInsert", insert, stmt); + } + { + SQLInsert insert = new SQLInsert( + new TableName("Person", null), + new SQLSelect( + false, + null, + GenericTestCaseBase.<String, FieldDef>map( + "partyId", new FieldDef(new FieldValue(null, "partyId"), null), + "firstName", new FieldDef(new MathValue("||", list(new FieldValue(null, "partyId"), new StringValue("-auto"))), "firstName") + ), + new Table(new TableName("Party", null), null), + null, + new ListCondition(new FieldValue(null, "partyId"), "IN", GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("b"))), + null, + null, + null, + -1, + -1 + ), + list("partyId", "firstName") + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("secondInsert", insert, stmt); + } + { + SQLUpdate update = new SQLUpdate( + new Table(new TableName("Person", null), null), + list( + new SetField("lastName", new MathValue("||", list(new StringValue("auto-"), new FieldValue(null, "partyId")))) + ), + new ListCondition(new FieldValue(null, "partyId"), "IN", GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("b"))) + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("firstUpdate", update, stmt); + } + { + SQLUpdate update = new SQLUpdate( + new Table(new TableName("Person", null), null), + list( + new SetField("lastName", new MathValue("||", list(new StringValue("auto-"), new FieldValue(null, "partyId")))), + new SetField("height", new NumberValue<Integer>(Integer.valueOf(5))), + new SetField("width", new NumberValue<Integer>(Integer.valueOf(7))) + ), + new ListCondition(new FieldValue(null, "partyId"), "IN", GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("b"))) + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("secondUpdate", update, stmt); + } + { + SQLUpdate update = new SQLUpdate( + new Table(new TableName("Person", null), null), + list( + new SetField("lastName", new MathValue("||", list(new StringValue("auto-"), new FieldValue(null, "partyId")))), + new SetField("height", new NumberValue<Integer>(Integer.valueOf(6))), + new SetField("width", new NumberValue<Integer>(Integer.valueOf(5))), + new SetField("nickname", new StringValue("a")) + ), + new ListCondition(new FieldValue(null, "partyId"), "IN", GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("b"))) + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("thirdUpdate", update, stmt); + } + { + SQLDelete delete = new SQLDelete( + new Table(new TableName("Person", null), null), + new ListCondition(new FieldValue(null, "partyId"), "IN", GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("b"))) + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("firstDelete", delete, stmt); + } + { + SQLDelete delete = new SQLDelete( + new Table(new TableName("Party", null), null), + new ListCondition(new FieldValue(null, "partyId"), "IN", GenericTestCaseBase.<Value>list(new StringValue("a"), new StringValue("b"))) + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("secondDelete", delete, stmt); + } + { + SQLView view = new SQLView( + "viewOne", + new SQLSelect( + false, + list(new FieldAll("a", Collections.<String>emptySet())), + null, + new Table(new TableName("Party", "a"), null), + null, + null, + null, + null, + null, + -1, + -1 + ) + ); + SQLStatement stmt = stmtIt.next(); + assertEquals("firstView", view, stmt); } } +/* +CREATE VIEW viewOne AS SELECT a.* FROM Party a; +*/ } |
Free forum by Nabble | Edit this page |