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. |