|
From: <dav...@us...> - 2008-12-17 06:50:04
|
Revision: 3964
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3964&view=rev
Author: davybrion
Date: 2008-12-17 06:50:00 +0000 (Wed, 17 Dec 2008)
Log Message:
-----------
Testfixture for NH-1609
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Entities.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Mappings.hbm.xml
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Entities.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Entities.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Entities.cs 2008-12-17 06:50:00 UTC (rev 3964)
@@ -0,0 +1,19 @@
+namespace NHibernate.Test.NHSpecificTest.NH1609
+{
+ public class EntityA
+ {
+ public virtual long Id { get; set; }
+ }
+
+ public class EntityB
+ {
+ public virtual long Id { get; set; }
+ public virtual EntityA A { get; set; }
+ public virtual EntityC C { get; set; }
+ }
+
+ public class EntityC
+ {
+ public virtual long Id { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Fixture.cs 2008-12-17 06:50:00 UTC (rev 3964)
@@ -0,0 +1,75 @@
+using System.Collections;
+
+using NHibernate.Criterion;
+using NHibernate.Test.NHSpecificTest.NH1609;
+
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1609
+{
+ [TestFixture]
+ [Ignore("not fixed yet")]
+ public class Fixture : BugTestCase
+ {
+ [Test]
+ public void Test()
+ {
+ using (ISession session = sessions.OpenSession())
+ using (ITransaction transaction = session.BeginTransaction())
+ {
+ EntityA a1 = CreateEntityA(session);
+ EntityA a2 = CreateEntityA(session);
+ EntityC c = CreateEntityC(session);
+ EntityB b = CreateEntityB(session, a1, c);
+
+ // make sure the created entities are no longer in the session
+ session.Clear();
+
+ IMultiCriteria multi = session.CreateMultiCriteria();
+
+ // the first query is a simple select by id on EntityA
+ multi.Add(session.CreateCriteria(typeof(EntityA)).Add(Restrictions.Eq("Id", a1.Id)));
+ // the second query is also a simple select by id on EntityB
+ multi.Add(session.CreateCriteria(typeof(EntityA)).Add(Restrictions.Eq("Id", a2.Id)));
+ // the final query selects the first element (using SetFirstResult and SetMaxResults) for each EntityB where B.A.Id = a1.Id and B.C.Id = c.Id
+ // the problem is that the paged query uses parameters @p0 and @p1 instead of @p2 and @p3
+ multi.Add(
+ session.CreateCriteria(typeof(EntityB))
+ .Add(Restrictions.Eq("A.Id", a1.Id))
+ .Add(Restrictions.Eq("C.Id", c.Id))
+ .SetFirstResult(0)
+ .SetMaxResults(1));
+
+ var results = multi.List();
+
+ Assert.AreEqual(1, ((IList)results[0]).Count);
+ Assert.AreEqual(1, ((IList)results[1]).Count);
+ Assert.AreEqual(1, ((IList)results[2]).Count);
+ }
+ }
+
+ private EntityA CreateEntityA(ISession session)
+ {
+ EntityA a = new EntityA();
+ session.Save(a);
+ session.Flush();
+ return a;
+ }
+
+ private EntityC CreateEntityC(ISession session)
+ {
+ EntityC c = new EntityC();
+ session.Save(c);
+ session.Flush();
+ return c;
+ }
+
+ private EntityB CreateEntityB(ISession session, EntityA a, EntityC c)
+ {
+ EntityB b = new EntityB { A = a, C = c };
+ session.Save(b);
+ session.Flush();
+ return b;
+ }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1609/Mappings.hbm.xml 2008-12-17 06:50:00 UTC (rev 3964)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1609">
+
+ <class name="EntityA" table="EntityA">
+ <id name="Id" column="Id" type="long">
+ <generator class="identity"/>
+ </id>
+ </class>
+
+ <class name="EntityB" table="EntityB">
+ <id name="Id" column="Id" type="long">
+ <generator class="identity"/>
+ </id>
+
+ <many-to-one name="A" column="AId" class="EntityA" />
+ <many-to-one name="C" column="CId" class="EntityC" />
+
+ </class>
+
+ <class name="EntityC" table="EntityC">
+ <id name="Id" column="Id" type="long">
+ <generator class="identity" />
+ </id>
+ </class>
+
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-12-16 21:53:58 UTC (rev 3963)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-12-17 06:50:00 UTC (rev 3964)
@@ -378,6 +378,8 @@
<Compile Include="NHSpecificTest\NH1274ExportExclude\Person.cs" />
<Compile Include="NHSpecificTest\NH1443\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1605\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1609\Entities.cs" />
+ <Compile Include="NHSpecificTest\NH1609\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1611OneToOneIdentity\Adjunct.cs" />
<Compile Include="NHSpecificTest\NH1611OneToOneIdentity\NH1611OneToOneIdentityFixture.cs" />
<Compile Include="NHSpecificTest\NH1611OneToOneIdentity\Primary.cs" />
@@ -1571,6 +1573,7 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1609\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1605\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1443\AclassWithSpecific.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1443\AclassWithDefault.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|