You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/08/16 14:26:49 UTC
svn commit: r566678 -
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressions.java
Author: aadamchik
Date: Thu Aug 16 05:26:48 2007
New Revision: 566678
URL: http://svn.apache.org/viewvc?view=rev&rev=566678
Log:
CAY-846 EJBQL Support for Functional Expressions
(rewriting unit test to work with dbs that auto-trim trailing chars)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressions.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressions.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressions.java?view=diff&rev=566678&r1=566677&r2=566678
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressions.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressions.java Thu Aug 16 05:26:48 2007
@@ -28,8 +28,11 @@
import org.apache.art.BigIntegerEntity;
import org.apache.art.DateTestEntity;
import org.apache.art.Painting;
+import org.apache.cayenne.DataObjectUtils;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.query.EJBQLQuery;
+import org.apache.cayenne.query.QueryChain;
+import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.unit.CayenneCase;
public class DataContextEJBQLFunctionalExpressions extends CayenneCase {
@@ -169,7 +172,7 @@
assertTrue(objects.contains(o2));
}
- public void testSIZE() {
+ public void testSIZE() {
ObjectContext context = createDataContext();
Artist a1 = (Artist) context.newObject(Artist.class);
@@ -317,14 +320,21 @@
}
public void testTRIM() {
+
ObjectContext context = createDataContext();
- Artist a1 = (Artist) context.newObject(Artist.class);
- a1.setArtistName(" A");
+ // insert via a SQL template to prevent adapter trimming and such...
+ QueryChain inserts = new QueryChain();
+ inserts.addQuery(new SQLTemplate(
+ Artist.class,
+ "INSERT INTO ARTIST (ARTIST_ID,ARTIST_NAME) VALUES(1, ' A')"));
+ inserts.addQuery(new SQLTemplate(
+ Artist.class,
+ "INSERT INTO ARTIST (ARTIST_ID,ARTIST_NAME) VALUES(2, 'A ')"));
+ context.performGenericQuery(inserts);
- Artist a2 = (Artist) context.newObject(Artist.class);
- a2.setArtistName("A ");
- context.commitChanges();
+ Artist a1 = (Artist) DataObjectUtils.objectForPK(context, Artist.class, 1);
+ Artist a2 = (Artist) DataObjectUtils.objectForPK(context, Artist.class, 2);
EJBQLQuery query = new EJBQLQuery(
"SELECT a FROM Artist a WHERE TRIM(a.artistName) = 'A'");
@@ -336,7 +346,8 @@
query = new EJBQLQuery(
"SELECT a FROM Artist a WHERE TRIM(LEADING FROM a.artistName) = 'A'");
objects = context.performQuery(query);
- assertEquals(1, objects.size());
+ // this is fuzzy cause some DB trim trailing data by default
+ assertTrue(objects.size() == 1 || objects.size() == 2);
assertTrue(objects.contains(a1));
query = new EJBQLQuery(
@@ -353,41 +364,41 @@
assertTrue(objects.contains(a2));
}
-
-// public void testTRIMChar() {
-// ObjectContext context = createDataContext();
-//
-// Artist a1 = (Artist) context.newObject(Artist.class);
-// a1.setArtistName("XXXA");
-//
-// Artist a2 = (Artist) context.newObject(Artist.class);
-// a2.setArtistName("AXXX");
-// context.commitChanges();
-//
-// EJBQLQuery query = new EJBQLQuery(
-// "SELECT a FROM Artist a WHERE TRIM('X' FROM a.artistName) = 'A'");
-// List objects = context.performQuery(query);
-// assertEquals(2, objects.size());
-// assertTrue(objects.contains(a1));
-// assertTrue(objects.contains(a2));
-//
-// query = new EJBQLQuery(
-// "SELECT a FROM Artist a WHERE TRIM(LEADING 'X' FROM a.artistName) = 'A'");
-// objects = context.performQuery(query);
-// assertEquals(1, objects.size());
-// assertTrue(objects.contains(a1));
-//
-// query = new EJBQLQuery(
-// "SELECT a FROM Artist a WHERE TRIM(TRAILING 'X' FROM a.artistName) = 'A'");
-// objects = context.performQuery(query);
-// assertEquals(1, objects.size());
-// assertTrue(objects.contains(a2));
-//
-// query = new EJBQLQuery(
-// "SELECT a FROM Artist a WHERE TRIM(BOTH 'X' FROM a.artistName) = 'A'");
-// objects = context.performQuery(query);
-// assertEquals(2, objects.size());
-// assertTrue(objects.contains(a1));
-// assertTrue(objects.contains(a2));
-// }
+
+ // public void testTRIMChar() {
+ // ObjectContext context = createDataContext();
+ //
+ // Artist a1 = (Artist) context.newObject(Artist.class);
+ // a1.setArtistName("XXXA");
+ //
+ // Artist a2 = (Artist) context.newObject(Artist.class);
+ // a2.setArtistName("AXXX");
+ // context.commitChanges();
+ //
+ // EJBQLQuery query = new EJBQLQuery(
+ // "SELECT a FROM Artist a WHERE TRIM('X' FROM a.artistName) = 'A'");
+ // List objects = context.performQuery(query);
+ // assertEquals(2, objects.size());
+ // assertTrue(objects.contains(a1));
+ // assertTrue(objects.contains(a2));
+ //
+ // query = new EJBQLQuery(
+ // "SELECT a FROM Artist a WHERE TRIM(LEADING 'X' FROM a.artistName) = 'A'");
+ // objects = context.performQuery(query);
+ // assertEquals(1, objects.size());
+ // assertTrue(objects.contains(a1));
+ //
+ // query = new EJBQLQuery(
+ // "SELECT a FROM Artist a WHERE TRIM(TRAILING 'X' FROM a.artistName) = 'A'");
+ // objects = context.performQuery(query);
+ // assertEquals(1, objects.size());
+ // assertTrue(objects.contains(a2));
+ //
+ // query = new EJBQLQuery(
+ // "SELECT a FROM Artist a WHERE TRIM(BOTH 'X' FROM a.artistName) = 'A'");
+ // objects = context.performQuery(query);
+ // assertEquals(2, objects.size());
+ // assertTrue(objects.contains(a1));
+ // assertTrue(objects.contains(a2));
+ // }
}