From: <fab...@us...> - 2008-09-03 17:54:16
|
Revision: 3741 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3741&view=rev Author: fabiomaulo Date: 2008-09-03 17:54:20 +0000 (Wed, 03 Sep 2008) Log Message: ----------- Merge r3740 (fix NH-1473) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/EntityType.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.cs trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.hbm.xml trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityTypeFixture.cs Modified: trunk/nhibernate/src/NHibernate/Type/EntityType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/EntityType.cs 2008-09-03 17:39:18 UTC (rev 3740) +++ trunk/nhibernate/src/NHibernate/Type/EntityType.cs 2008-09-03 17:54:20 UTC (rev 3741) @@ -81,7 +81,7 @@ } else { - yid = persister.GetIdentifier(x, entityMode); + yid = persister.GetIdentifier(y, entityMode); } return persister.IdentifierType.IsEqual(xid, yid, entityMode, factory); @@ -567,13 +567,13 @@ public override int Compare(object x, object y, EntityMode? entityMode) { IComparable xComp = x as IComparable; - IComparable yComp = x as IComparable; + IComparable yComp = y as IComparable; if (xComp != null) return xComp.CompareTo(y); if (yComp != null) - return yComp.CompareTo(x); + return -yComp.CompareTo(x); - return 0; //TODO: entities CAN be compared, by PK, fix this! -> only if/when we can extract the id values.... + return 0; } private System.Type DetermineAssociatedEntityClass() Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-03 17:39:18 UTC (rev 3740) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-03 17:54:20 UTC (rev 3741) @@ -828,6 +828,8 @@ <Compile Include="TypesTest\DecimalTypeFixture.cs" /> <Compile Include="TypesTest\DoubleClass.cs" /> <Compile Include="TypesTest\DoubleTypeFixture.cs" /> + <Compile Include="TypesTest\EntityClass.cs" /> + <Compile Include="TypesTest\EntityTypeFixture.cs" /> <Compile Include="TypesTest\EnumStringClass.cs" /> <Compile Include="TypesTest\EnumStringTypeFixture.cs" /> <Compile Include="TypesTest\GuidClass.cs" /> @@ -1449,6 +1451,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="TypesTest\EntityClass.hbm.xml" /> <EmbeddedResource Include="Events\Collections\Association\Bidirectional\ManyToMany\BidirectionalManyToManyBagToSetMapping.hbm.xml" /> <EmbeddedResource Include="Events\Collections\Association\Bidirectional\ManyToMany\BidirectionalManyToManySetToSetMapping.hbm.xml" /> <EmbeddedResource Include="Events\Collections\Association\Bidirectional\OneToMany\BidirectionalOneToManyBagMapping.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.cs 2008-09-03 17:54:20 UTC (rev 3741) @@ -0,0 +1,45 @@ +using System; + +namespace NHibernate.Test.TypesTest +{ + public class EntityClass + { + private int _id; + + public EntityClass() {} + + public EntityClass(int _id) + { + this._id = _id; + } + + public int Id + { + get { return _id; } + set { _id = value; } + } + } + + public class ComparableEntityClass : EntityClass, IComparable + { + public ComparableEntityClass() {} + + #region IComparable Members + + public ComparableEntityClass(int _id) : base(_id) {} + + public int CompareTo(object obj) + { + EntityClass other = obj as EntityClass; + + if (other == null) + { + return 1; + } + + return Id.CompareTo(other.Id); + } + + #endregion + } +} Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityClass.hbm.xml 2008-09-03 17:54:20 UTC (rev 3741) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.TypesTest" + default-lazy="false"> + + <class name="EntityClass" table="nh_entity"> + <id name="Id" column="id"> + <generator class="assigned" /> + </id> + + </class> +</hibernate-mapping> Added: trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityTypeFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityTypeFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/TypesTest/EntityTypeFixture.cs 2008-09-03 17:54:20 UTC (rev 3741) @@ -0,0 +1,53 @@ +using NHibernate.Engine; +using NHibernate.Type; +using NUnit.Framework; + +namespace NHibernate.Test.TypesTest +{ + // http://jira.nhibernate.org/browse/NH-1473 + [TestFixture] + public class EntityTypeFixture : TypeFixtureBase + { + protected override string TypeName + { + get { return "Entity"; } + } + + [Test] + public void Compare() + { + EntityType type = (EntityType) NHibernateUtil.Entity(typeof (EntityClass)); + + EntityClass a = new EntityClass(1); + EntityClass b = new EntityClass(2); + + EntityClass ca = new ComparableEntityClass(1); + EntityClass cb = new ComparableEntityClass(2); + + Assert.AreEqual(-1, type.Compare(a, cb, EntityMode.Poco)); + Assert.AreEqual(-1, type.Compare(ca, b, EntityMode.Poco)); + Assert.AreEqual(-1, type.Compare(ca, cb, EntityMode.Poco)); + + Assert.AreEqual(1, type.Compare(b, ca, EntityMode.Poco)); + Assert.AreEqual(1, type.Compare(cb, a, EntityMode.Poco)); + Assert.AreEqual(1, type.Compare(cb, ca, EntityMode.Poco)); + + Assert.AreEqual(0, type.Compare(ca, a, EntityMode.Poco)); + Assert.AreEqual(0, type.Compare(a, ca, EntityMode.Poco)); + } + + [Test] + public void Equals() + { + EntityType type = (EntityType) NHibernateUtil.Entity(typeof (EntityClass)); + + EntityClass a = new EntityClass(1); + EntityClass b = new EntityClass(2); + EntityClass c = new EntityClass(1); + + Assert.IsTrue(type.IsEqual(a, a, EntityMode.Poco, (ISessionFactoryImplementor) sessions)); + Assert.IsFalse(type.IsEqual(a, b, EntityMode.Poco, (ISessionFactoryImplementor) sessions)); + Assert.IsTrue(type.IsEqual(a, c, EntityMode.Poco, (ISessionFactoryImplementor) sessions)); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |