Index: topia2/src/test/org/codelutin/topia/TopiaContextTest.java diff -u topia2/src/test/org/codelutin/topia/TopiaContextTest.java:1.8 topia2/src/test/org/codelutin/topia/TopiaContextTest.java:1.9 --- topia2/src/test/org/codelutin/topia/TopiaContextTest.java:1.8 Fri Feb 24 00:48:35 2006 +++ topia2/src/test/org/codelutin/topia/TopiaContextTest.java Fri Jul 21 00:56:36 2006 @@ -23,9 +23,9 @@ * * @author poussin * - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ * - * Last update: $Date: 2006/02/24 00:48:35 $ by : $Author: thimel $ + * Last update: $Date: 2006/07/21 00:56:36 $ by : $Author: thimel $ */ package org.codelutin.topia; @@ -33,7 +33,6 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.security.Principal; -import java.security.PrivilegedAction; import java.security.PrivilegedExceptionAction; import java.util.HashSet; import java.util.List; @@ -64,6 +63,8 @@ import org.codelutin.topia.security.entities.TopiaPrincipal; import org.codelutin.topia.security.entities.TopiaUser; import org.codelutin.topia.security.entities.TopiaUserManager; +import org.hibernate.criterion.Projections; +import org.hibernate.criterion.Restrictions; /** * @author poussin @@ -594,4 +595,29 @@ } + public void testProjection() throws Exception { + Properties config = getProperties(); + + TopiaContext context = TopiaContextFactory.getContext(config); + + TopiaContextImplementor childContext = (TopiaContextImplementor) context + .beginTransaction(); + TopiaContextImplementor subChildContext = (TopiaContextImplementor) childContext + .beginTransaction(); + + TopiaDAO persons = subChildContext.getDAO(Person.class); + Person p = persons.create("name", "poussin", "firstname", "benj"); + p = persons.create("name", "thimel", "firstname", "arno"); + p = persons.create("name", "thimel", "firstname", "del"); + p = persons.create("name", "pineau", "firstname", "cedric"); + subChildContext.commitTransaction(); + + assertEquals(4, persons.size()); + + assertEquals("thimel", persons.project(Projections.max("name"))); + assertEquals("pineau", persons.project(Projections.min("name"))); + assertEquals(3, persons.projectAll(Projections.groupProperty("name")).size()); + assertEquals(2, persons.queryAll(Projections.groupProperty("name"), Restrictions.ne("name", "poussin")).size()); + } + } //TopiaContextTest