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;
+*/
}