svn commit: r893082 - in /ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test: GoodParseAll.sql SQLTest.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r893082 - in /ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test: GoodParseAll.sql SQLTest.java

doogie-3
Author: doogie
Date: Tue Dec 22 06:11:53 2009
New Revision: 893082

URL: http://svn.apache.org/viewvc?rev=893082&view=rev
Log:
Start actually doing real testing.

Modified:
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql
    ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/SQLTest.java

Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql?rev=893082&r1=893081&r2=893082&view=diff
==============================================================================
--- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql (original)
+++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/test/GoodParseAll.sql Tue Dec 22 06:11:53 2009
@@ -3,8 +3,10 @@
  b.* EXCLUDE (partyId, partyId),
  c.* EXCLUDE (partyId),
  d.roleTypeId,
- SUM(a.partyId) AS fooBar,
- FOO(a.partyId, 1) AS baz
+ d.description AS roleDescription,
+ SUM(a.partyId),
+ FOO(a.partyId, 1) AS baz,
+ (a.partyId || '-' || a.partyTypeId) AS one
 FROM
  Party a LEFT JOIN Person b USING partyId
  LEFT JOIN PartyGroup c ON b.partyId = c.partyId

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=893082&r1=893081&r2=893082&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 Tue Dec 22 06:11:53 2009
@@ -20,6 +20,7 @@
 
 import java.net.URL;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -28,19 +29,107 @@
 
 import junit.framework.TestCase;
 
+import org.ofbiz.sql.Condition;
+import org.ofbiz.sql.FieldAll;
+import org.ofbiz.sql.FieldDef;
+import org.ofbiz.sql.FieldDefFieldValue;
+import org.ofbiz.sql.FieldDefValue;
+import org.ofbiz.sql.FieldValue;
+import org.ofbiz.sql.FunctionCall;
+import org.ofbiz.sql.MathValue;
 import org.ofbiz.sql.Parser;
 import org.ofbiz.sql.SQLSelect;
 import org.ofbiz.sql.SQLStatement;
+import org.ofbiz.sql.Value;
 
-public class SQLTest extends TestCase {
+import org.ofbiz.base.test.GenericTestCaseBase;
+
+public class SQLTest extends GenericTestCaseBase {
     public SQLTest(String name) {
         super(name);
     }
 
     public void testParse() throws Exception {
-        List statements = new Parser(getClass().getResourceAsStream("GoodParseAll.sql")).SQLFile();
-        for (Object statement: statements) {
+        List<SQLStatement<?>> statements = new Parser(getClass().getResourceAsStream("GoodParseAll.sql")).SQLFile();
+        for (SQLStatement<?> statement: statements) {
             System.err.println(statement);
         }
+        Iterator<SQLStatement<?>> stmtIt = statements.iterator();
+        assertTrue("has more statements", stmtIt.hasNext());
+        {
+            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", 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 FieldDefFieldValue", fieldDef instanceof FieldDefFieldValue);
+            FieldDefFieldValue fdfv = (FieldDefFieldValue) fieldDef;
+            assertEquals("first fieldDef.tableName", "d", fdfv.getFieldValue().getTableName());
+            assertEquals("first fieldDef.fieldName", "roleTypeId", fdfv.getFieldValue().getFieldName());
+            assertEquals("first fieldDef.defaultName", "roleTypeId", fdfv.getFieldValue().getDefaultName());
+
+            assertTrue("has second field def", fieldDefIt.hasNext());
+            fieldDef = fieldDefIt.next();
+            assertEquals("second fieldDef.alias", "roleDescription", fieldDef.getAlias());
+            assertTrue("second is FieldDefFieldValue", fieldDef instanceof FieldDefFieldValue);
+            fdfv = (FieldDefFieldValue) fieldDef;
+            assertEquals("second fieldDef.tableName", "d", fdfv.getFieldValue().getTableName());
+            assertEquals("second fieldDef.fieldName", "description", fdfv.getFieldValue().getFieldName());
+            assertEquals("second fieldDef.defaultName", "description", fdfv.getFieldValue().getDefaultName());
+
+            assertTrue("has third field def", fieldDefIt.hasNext());
+            fieldDef = fieldDefIt.next();
+            assertEquals("third fieldDef.alias", "SUM", fieldDef.getAlias());
+            assertTrue("third is FieldDefValue", fieldDef instanceof FieldDefValue);
+            FieldDefValue fdv = (FieldDefValue) fieldDef;
+            assertTrue("third fieldDefValue.staticValue is FunctionCall", fdv.getValue() instanceof FunctionCall);
+            FunctionCall fc = (FunctionCall) fdv.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 FieldDefValue", fieldDef instanceof FieldDefValue);
+            fdv = (FieldDefValue) fieldDef;
+
+            assertTrue("has fifth field def", fieldDefIt.hasNext());
+            fieldDef = fieldDefIt.next();
+            assertEquals("fifth fieldDef.alias", "one", fieldDef.getAlias());
+            assertTrue("fifth is FieldDefValue", fieldDef instanceof FieldDefValue);
+            fdv = (FieldDefValue) fieldDef;
+
+            assertFalse("has no more field def", fieldDefIt.hasNext());
+
+        }
     }
 }