[hibernate-commits] Hibernate SVN: r10397 - in trunk/Hibernate3/test/org/hibernate/test: . collection collection/map collection/set hql tm

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Sep 1 10:37:51 EDT 2006


Author: steve.ebersole at jboss.com
Date: 2006-09-01 10:37:48 -0400 (Fri, 01 Sep 2006)
New Revision: 10397

Added:
   trunk/Hibernate3/test/org/hibernate/test/collection/CollectionSuite.java
   trunk/Hibernate3/test/org/hibernate/test/collection/map/
   trunk/Hibernate3/test/org/hibernate/test/collection/map/Child.java
   trunk/Hibernate3/test/org/hibernate/test/collection/map/Mappings.hbm.xml
   trunk/Hibernate3/test/org/hibernate/test/collection/map/Parent.java
   trunk/Hibernate3/test/org/hibernate/test/collection/map/PersistentMapTest.java
   trunk/Hibernate3/test/org/hibernate/test/collection/set/
   trunk/Hibernate3/test/org/hibernate/test/collection/set/Child.java
   trunk/Hibernate3/test/org/hibernate/test/collection/set/Mappings.hbm.xml
   trunk/Hibernate3/test/org/hibernate/test/collection/set/Parent.java
   trunk/Hibernate3/test/org/hibernate/test/collection/set/PersistentSetTest.java
Modified:
   trunk/Hibernate3/test/org/hibernate/test/AllTests.java
   trunk/Hibernate3/test/org/hibernate/test/TestCase.java
   trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java
   trunk/Hibernate3/test/org/hibernate/test/tm/CMTTest.java
Log:
added tests for HHH-1668 (and friends);
cleaned up the skipping stuff

Modified: trunk/Hibernate3/test/org/hibernate/test/AllTests.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/AllTests.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/AllTests.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -14,7 +14,7 @@
 import org.hibernate.test.cache.CacheSuite;
 import org.hibernate.test.cascade.RefreshTest;
 import org.hibernate.test.cid.CompositeIdTest;
-import org.hibernate.test.collection.CollectionTest;
+import org.hibernate.test.collection.CollectionSuite;
 import org.hibernate.test.component.ComponentTest;
 import org.hibernate.test.compositeelement.CompositeElementTest;
 import org.hibernate.test.comppropertyref.ComponentPropertyRefTest;
@@ -187,7 +187,7 @@
 			suite.addTest( IdClassTest.suite() );
 			suite.addTest( ArrayTest.suite() );
 			suite.addTest( TernaryTest.suite() );
-			suite.addTest( CollectionTest.suite() );
+			suite.addTest( CollectionSuite.suite() );
 			suite.addTest( IdBagTest.suite() );
 			suite.addTest( MapCompositeElementTest.suite() );
 			suite.addTest( MapIndexFormulaTest.suite() );

Modified: trunk/Hibernate3/test/org/hibernate/test/TestCase.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/TestCase.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/TestCase.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -28,6 +28,7 @@
 import org.hibernate.dialect.SQLServerDialect;
 import org.hibernate.dialect.SybaseDialect;
 import org.hibernate.dialect.TimesTenDialect;
+import org.hibernate.dialect.DerbyDialect;
 import org.hibernate.engine.SessionFactoryImplementor;
 import org.hibernate.mapping.Collection;
 import org.hibernate.mapping.PersistentClass;
@@ -41,7 +42,7 @@
 	private static Dialect dialect;
 	private static Class lastTestClass;
 	private org.hibernate.classic.Session session;
-	
+
 	protected boolean recreateSchema() {
 		return true;
 	}
@@ -147,13 +148,17 @@
 		return "nonstrict-read-write";
 	}
 
+	protected SessionFactoryImplementor sfi() {
+		return ( SessionFactoryImplementor ) getSessions();
+	}
+
 	protected void setUp() throws Exception {
 		if ( getSessions()==null || lastTestClass!=getClass() ) {
 			buildSessionFactory( getMappings() );
 			lastTestClass = getClass();
 		}
 	}
-	
+
 	protected void runTest() throws Throwable {
 		final boolean stats = ( (SessionFactoryImplementor) sessions ).getStatistics().isStatisticsEnabled();
 		try {
@@ -171,9 +176,9 @@
 			}
 			else {
 				session=null;
-				
+
 				//assertAllDataRemoved();
-				
+
 			}
 		}
 		catch (Throwable e) {
@@ -195,34 +200,64 @@
 		}
 	}
 
+	public void runBare() throws Throwable {
+		String sysPropName = "hibernate.test.validatefailureexpected";
+		assertNotNull( getName() );
+		if ( Boolean.getBoolean( sysPropName ) ) {
+			if ( getName().endsWith( "FailureExpected" ) ) {
+				Throwable t = null;
+				try {
+					super.runBare();
+				}
+				catch ( Throwable afe ) {
+					t = afe;
+				}
+				if ( t == null ) {
+					fail( "Test where marked as FailureExpected, but did not fail!" );
+				}
+				else {
+					reportSkip( "ignoring *FailuredExpected methods", "Failed with: " + t.toString() );
+				}
+			}
+			else {
+				super.runBare();
+			}
+		}
+		else {
+			super.runBare();
+		}
+	}
+
 	protected void assertAllDataRemoved() {
-		if(!recreateSchema()) {
+		if ( !recreateSchema() ) {
 			return; // no tables were created...
 		}
-		
+
 		Session tmpSession = openSession();
 		List list = tmpSession.createQuery( "from java.lang.Object" ).list();
-		
+
 		StringBuffer sb = new StringBuffer();
 		Map items = new HashMap();
-		
-		if(!list.isEmpty()) {
-			for (Iterator iter = list.iterator(); iter.hasNext();) {
+
+		if ( !list.isEmpty() ) {
+			for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
 				Object element = iter.next();
-				Integer l = (Integer) items.get(tmpSession.getEntityName( element ));
-				if(l==null) {
-					l = new Integer(0);					
+				Integer l = ( Integer ) items.get( tmpSession.getEntityName( element ) );
+				if ( l == null ) {
+					l = new Integer( 0 );
 				}
-				l = new Integer(l.intValue()+1);
-				items.put(tmpSession.getEntityName( element ), l);
-				System.out.println("Data left: " + element);
+				l = new Integer( l.intValue() + 1 );
+				items.put( tmpSession.getEntityName( element ), l );
+				System.out.println( "Data left: " + element );
 			}
 			try {
 				tmpSession.close();
-			} finally {
-				fail("Data is left in the database: " + items.toString() );
 			}
-		} else {
+			finally {
+				fail( "Data is left in the database: " + items.toString() );
+			}
+		}
+		else {
 			tmpSession.close();
 		}
 	}
@@ -291,6 +326,9 @@
 		}
 	}
 
+
+	// test skipping ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 	/**
 	 * Intended to indicate that this test class as a whole is intended for
 	 * a dialect or series of dialects.  Skips here (appliesTo = false), therefore
@@ -332,35 +370,62 @@
 		}
 	}
 
-	protected boolean dialectSupportsEmptyInList(String testdescription) {
-		return reportSkip( "Dialect does not support SQL: \'x in ()\'.",  testdescription, dialectIsNot(new Class[] {
-				Oracle9Dialect.class,
-				MySQLDialect.class,
-				DB2Dialect.class,
-				HSQLDialect.class,
-				SQLServerDialect.class,
-				SybaseDialect.class,
-				PostgreSQLDialect.class,
-				TimesTenDialect.class
-		} ));
+	protected boolean allowsPhysicalColumnNameInOrderby(String testDescription) {
+		if ( DerbyDialect.class.isInstance( getDialect() ) ) {
+			reportSkip( "Dialect does not support physical column name in order-by clause after it is aliased", testDescription );
+			return false;
+		}
+		return true;
 	}
 
-	protected boolean dialectIsCaseSensitive(String testdescription) {
-		//	MySQL and SQLServer is case insensitive on strings (at least in default installation)
-		return reportSkip( "Dialect is case sensitive. ", testdescription, dialectIsNot(new Class[] { MySQLDialect.class, SQLServerDialect.class }));
+	protected boolean allowsPhysicalColumnNameInHaving(String testDescription) {
+		if ( DerbyDialect.class.isInstance( getDialect() ) ) {
+			reportSkip( "Dialect does not support physical column name in having clause after it is aliased", testDescription );
+			return false;
+		}
+		return true;
 	}
 
-	protected boolean reportSkip(String reason, String testDescription, boolean canDoIt) {
+	protected boolean dialectSupportsEmptyInList(String testDescription) {
+		boolean canDoIt = dialectIsNot(
+				new Class[] {
+						Oracle9Dialect.class,
+						MySQLDialect.class,
+						DB2Dialect.class,
+						HSQLDialect.class,
+						SQLServerDialect.class,
+						SybaseDialect.class,
+						PostgreSQLDialect.class,
+						TimesTenDialect.class
+				}
+		);
+
 		if ( !canDoIt ) {
-			reportSkip( reason, testDescription );
+			reportSkip( "Dialect does not support SQL: \'x in ()\'.", testDescription );
 		}
 		return canDoIt;
 	}
 
+	protected boolean dialectIsCaseSensitive(String testDescription) {
+		//	MySQL and SQLServer is case insensitive on strings (at least in default installation)
+		boolean canDoIt = dialectIsNot(
+				new Class[] { MySQLDialect.class, SQLServerDialect.class }
+		);
+
+		if ( !canDoIt ) {
+			reportSkip( "Dialect is case sensitive. ", testDescription );
+		}
+		return canDoIt;
+	}
+
 	protected void reportSkip(String reason, String testDescription) {
 		SKIP_LOG.warn( "*** skipping [" + fullTestName() + "] - " + testDescription + " : " + reason, new Exception()  );
 	}
 
+	public String fullTestName() {
+		return this.getName() + " (" + this.getClass().getName() + ")";
+	}
+
 	private boolean dialectIsNot(Class[] dialectClasses) {
 		for (int i = 0; i < dialectClasses.length; i++) {
 			Class dialectClass = dialectClasses[i];
@@ -371,35 +436,4 @@
 		return true;
 	}
 
-	public String fullTestName() {
-		return this.getName() + " (" + this.getClass().getName() + ")";
-	}
-
-	protected SessionFactoryImplementor sfi() {
-		return ( SessionFactoryImplementor ) getSessions();
-	}
-	
-	public void runBare() throws Throwable {		
-		assertNotNull(getName());
-		String string = "hibernate.test.validatefailureexpected";
-		if(Boolean.getBoolean( string )) {
-			if(getName().endsWith( "FailureExpected" ) ) {
-				Throwable t = null;
-				try {
-					super.runBare();							
-				} catch(Throwable afe) {
-					t = afe;
-				}
-				if(t==null) {
-					fail("Test where marked as FailureExpected, but did not fail!");
-				} else {
-					reportSkip( "ignoring *FailuredExpected methods", "Failed with: " + t.toString() );
-				}
-			} else {
-				super.runBare();
-			}
-		} else {
-			super.runBare();
-		}
-	}
 }
\ No newline at end of file

Added: trunk/Hibernate3/test/org/hibernate/test/collection/CollectionSuite.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/CollectionSuite.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/CollectionSuite.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,23 @@
+package org.hibernate.test.collection;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.hibernate.test.collection.map.PersistentMapTest;
+import org.hibernate.test.collection.set.PersistentSetTest;
+
+/**
+ * todo: describe CollectionSuite
+ *
+ * @author Steve Ebersole
+ */
+public class CollectionSuite {
+
+	public static Test suite() {
+		TestSuite suite = new TestSuite( "Collection-related tests" );
+		suite.addTest( CollectionTest.suite() );
+		suite.addTest( PersistentMapTest.suite() );
+		suite.addTest( PersistentSetTest.suite() );
+		return suite;
+	}
+
+}

Added: trunk/Hibernate3/test/org/hibernate/test/collection/map/Child.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/map/Child.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/map/Child.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,34 @@
+package org.hibernate.test.collection.map;
+
+/**
+ * todo: describe Child
+ *
+ * @author Steve Ebersole
+ */
+public class Child {
+	private String name;
+	private Parent parent;
+
+	public Child() {
+	}
+
+	public Child(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Parent getParent() {
+		return parent;
+	}
+
+	public void setParent(Parent parent) {
+		this.parent = parent;
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/collection/map/Mappings.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/map/Mappings.hbm.xml	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/map/Mappings.hbm.xml	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+
+<hibernate-mapping package="org.hibernate.test.collection.map">
+
+    <class name="Parent">
+		<id name="name" column="NAME" type="string" />
+
+        <map name="children" inverse="true" cascade="all">
+            <key column="PARENT" />
+            <map-key type="string" />
+            <one-to-many class="Child" />
+        </map>
+	</class>
+
+    <class name="Child">
+        <id name="name" column="NAME" type="string"/>
+        <many-to-one name="parent" class="Parent" cascade="none" />
+    </class>
+
+</hibernate-mapping>

Added: trunk/Hibernate3/test/org/hibernate/test/collection/map/Parent.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/map/Parent.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/map/Parent.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,37 @@
+package org.hibernate.test.collection.map;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * todo: describe Parent
+ *
+ * @author Steve Ebersole
+ */
+public class Parent {
+	private String name;
+	private Map children = new HashMap();
+
+	public Parent() {
+	}
+
+	public Parent(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Map getChildren() {
+		return children;
+	}
+
+	public void setChildren(Map children) {
+		this.children = children;
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/collection/map/PersistentMapTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/map/PersistentMapTest.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/map/PersistentMapTest.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,75 @@
+package org.hibernate.test.collection.map;
+
+import org.hibernate.test.TestCase;
+import org.hibernate.Session;
+import org.hibernate.collection.PersistentMap;
+
+import java.util.HashMap;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * todo: describe PersistentMapTest
+ *
+ * @author Steve Ebersole
+ */
+public class PersistentMapTest extends TestCase {
+	public PersistentMapTest(String name) {
+		super( name );
+	}
+
+	protected String[] getMappings() {
+		return new String[] { "collection/map/Mappings.hbm.xml" };
+	}
+
+	public static Test suite() {
+		return new TestSuite( PersistentMapTest.class );
+	}
+
+	public void testWriteMethodDirtying() {
+		Parent parent = new Parent( "p1" );
+		Child child = new Child( "c1" );
+		parent.getChildren().put( child.getName(), child );
+		child.setParent( parent );
+		Child otherChild = new Child( "c2" );
+
+		Session session = openSession();
+		session.beginTransaction();
+		session.save( parent );
+		session.flush();
+		// at this point, the set on parent has now been replaced with a PersistentSet...
+		PersistentMap children = ( PersistentMap ) parent.getChildren();
+
+		Object old = children.put( child.getName(), child );
+		assertTrue( old == child );
+		assertFalse( children.isDirty() );
+
+		old = children.remove( otherChild.getName() );
+		assertNull( old );
+		assertFalse( children.isDirty() );
+
+		HashMap otherMap = new HashMap();
+		otherMap.put( child.getName(), child );
+		children.putAll( otherMap );
+		assertFalse( children.isDirty() );
+
+		otherMap = new HashMap();
+		otherMap.put( otherChild.getName(), otherChild );
+		children.putAll( otherMap );
+		assertTrue( children.isDirty() );
+
+		children.clearDirty();
+		session.delete( child );
+		children.clear();
+		assertTrue( children.isDirty() );
+		session.flush();
+
+		children.clear();
+		assertFalse( children.isDirty() );
+
+		session.delete( parent );
+		session.getTransaction().commit();
+		session.close();
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/collection/set/Child.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/set/Child.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/set/Child.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,34 @@
+package org.hibernate.test.collection.set;
+
+/**
+ * todo: describe Child
+ *
+ * @author Steve Ebersole
+ */
+public class Child {
+	private String name;
+	private Parent parent;
+
+	public Child() {
+	}
+
+	public Child(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Parent getParent() {
+		return parent;
+	}
+
+	public void setParent(Parent parent) {
+		this.parent = parent;
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/collection/set/Mappings.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/set/Mappings.hbm.xml	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/set/Mappings.hbm.xml	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+
+<hibernate-mapping package="org.hibernate.test.collection.set">
+
+    <class name="Parent">
+		<id name="name" column="NAME" type="string" />
+
+        <set name="children" inverse="true" cascade="all">
+            <key column="PARENT" />
+            <one-to-many class="Child" />
+        </set>
+	</class>
+
+    <class name="Child">
+        <id name="name" column="NAME" type="string"/>
+        <many-to-one name="parent" class="Parent" cascade="none" />
+    </class>
+
+</hibernate-mapping>

Added: trunk/Hibernate3/test/org/hibernate/test/collection/set/Parent.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/set/Parent.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/set/Parent.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,37 @@
+package org.hibernate.test.collection.set;
+
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ * todo: describe Parent
+ *
+ * @author Steve Ebersole
+ */
+public class Parent {
+	private String name;
+	private Set children = new HashSet();
+
+	public Parent() {
+	}
+
+	public Parent(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Set getChildren() {
+		return children;
+	}
+
+	public void setChildren(Set children) {
+		this.children = children;
+	}
+}

Added: trunk/Hibernate3/test/org/hibernate/test/collection/set/PersistentSetTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/collection/set/PersistentSetTest.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/collection/set/PersistentSetTest.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -0,0 +1,76 @@
+package org.hibernate.test.collection.set;
+
+import org.hibernate.test.TestCase;
+import org.hibernate.Session;
+import org.hibernate.collection.PersistentSet;
+
+import java.util.HashSet;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * todo: describe PersistentSetTest
+ *
+ * @author Steve Ebersole
+ */
+public class PersistentSetTest extends TestCase {
+	public PersistentSetTest(String name) {
+		super( name );
+	}
+
+	protected String[] getMappings() {
+		return new String[] { "collection/set/Mappings.hbm.xml" };
+	}
+
+	public static Test suite() {
+		return new TestSuite( PersistentSetTest.class );
+	}
+
+	public void testWriteMethodDirtying() {
+		Parent parent = new Parent( "p1" );
+		Child child = new Child( "c1" );
+		parent.getChildren().add( child );
+		child.setParent( parent );
+		Child otherChild = new Child( "c2" );
+
+		Session session = openSession();
+		session.beginTransaction();
+		session.save( parent );
+		session.flush();
+		// at this point, the set on parent has now been replaced with a PersistentSet...
+		PersistentSet children = ( PersistentSet ) parent.getChildren();
+
+		assertFalse( children.add( child ) );
+		assertFalse( children.isDirty() );
+
+		assertFalse( children.remove( otherChild ) );
+		assertFalse( children.isDirty() );
+
+		HashSet otherSet = new HashSet();
+		otherSet.add( child );
+		assertFalse( children.addAll( otherSet ) );
+		assertFalse( children.isDirty() );
+
+		assertFalse( children.retainAll( otherSet ) );
+		assertFalse( children.isDirty() );
+
+		otherSet = new HashSet();
+		otherSet.add( otherChild );
+		assertFalse( children.removeAll( otherSet ) );
+		assertFalse( children.isDirty() );
+
+		children.clear();
+		session.delete( child );
+		assertTrue( children.isDirty() );
+
+		session.flush();
+
+		children.clear();
+		assertFalse( children.isDirty() );
+
+		session.delete( parent );
+		session.getTransaction().commit();
+		session.close();
+	}
+}

Modified: trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -89,6 +89,79 @@
 	}
 
 
+	public void testSelectAndResultColumnReferences() {
+		Session s = openSession();
+		s.beginTransaction();
+		s.createQuery( "select m.name from Model as m" ).list();
+		s.createQuery( "select h.name.first from Human h" ).list();
+		s.createQuery( "select h.name from Human h" ).list();
+		s.getTransaction().commit();
+		s.close();
+	}
+
+	public void testSelectAndResultColumnReferencesWithGrouping() {
+		if ( ! allowsPhysicalColumnNameInHaving( "scalar HQL queries" ) ) {
+			return;
+		}
+
+		Session s = openSession();
+		s.beginTransaction();
+
+		s.createQuery( "select m.name, count(*) from Model as m group by m.name" ).list();
+		s.createQuery( "select m.name, count(*) from Model as m group by m.name order by m.name" ).list();
+		s.createQuery( "select m.name, max( m.id ) from Model as m group by m.name having max( id ) > 1" ).list();
+		s.createQuery( "select m.name, count(*) from Model as m group by m.name having count(*) > 1" ).list();
+		s.createQuery( "select m.name, count(*) from Model as m group by m.name having m.name like 'abc%'" ).list();
+
+		s.createQuery( "select h.name.first, count(*) from Human h group by h.name.first" ).list();
+		s.createQuery( "select h.name.first, count(*) from Human h group by h.name.first having count(*) > 1" ).list();
+
+		s.createQuery( "select h.name, count(*) from Human h group by h.name" ).list();
+		s.createQuery( "select h.name, count(*) from Human h group by h.name having count(*) > 1" ).list();
+
+		s.getTransaction().commit();
+		s.close();
+	}
+
+	public void testSelectAndResultColumnReferencesWithCollation() {
+		if ( ! allowsPhysicalColumnNameInOrderby( "scalar HQL queries" ) ) {
+			return;
+		}
+
+		Session s = openSession();
+		s.beginTransaction();
+
+		s.createQuery( "select m.name from Model as m order by m.name" ).list();
+
+		s.createQuery( "select h.name.first from Human h order by h.name.first" ).list();
+
+		s.createQuery( "select h.name from Human h order by h.name" ).list();
+
+		s.getTransaction().commit();
+		s.close();
+	}
+
+	public void testSelectAndResultColumnReferencesWithCollationAndOrdering() {
+		if ( ! allowsPhysicalColumnNameInHaving( "scalar HQL queries" ) ) {
+			return;
+		}
+		if ( ! allowsPhysicalColumnNameInOrderby( "scalar HQL queries" ) ) {
+			return;
+		}
+
+		Session s = openSession();
+		s.beginTransaction();
+
+		s.createQuery( "select m.name, count(*) from Model as m group by m.name having m.name like 'abc%' order by m.name" ).list();
+
+		s.createQuery( "select h.name.first, count(*) from Human h group by h.name.first having count(*) > 1 order by h.name.first" ).list();
+
+		s.createQuery( "select h.name, count(*) from Human h group by h.name having count(*) > 1 order by h.name" ).list();
+
+		s.getTransaction().commit();
+		s.close();
+	}
+
 	public void testJPAPositionalParameterList() {
 		Session s = openSession();
 		s.beginTransaction();

Modified: trunk/Hibernate3/test/org/hibernate/test/tm/CMTTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/tm/CMTTest.java	2006-09-01 13:48:02 UTC (rev 10396)
+++ trunk/Hibernate3/test/org/hibernate/test/tm/CMTTest.java	2006-09-01 14:37:48 UTC (rev 10397)
@@ -185,10 +185,12 @@
 	}
 	
 	public void testConcurrentCachedDirtyQueries() throws Exception {
-		if ( reportSkip( "dead-lock bug", "concurrent queries", getDialect() instanceof SybaseDialect ) ) {
+		if ( getDialect() instanceof SybaseDialect ) {
 			// sybase and sqlserver have serious locking issues here...
+			reportSkip( "dead-lock bug", "concurrent queries" );
 			return;
 		}
+
 		DummyTransactionManager.INSTANCE.begin();
 		Session s = openSession();
 		Map foo = new HashMap();




More information about the hibernate-commits mailing list