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