From: <fab...@us...> - 2008-09-18 16:38:42
|
Revision: 3768 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3768&view=rev Author: fabiomaulo Date: 2008-09-18 23:38:53 +0000 (Thu, 18 Sep 2008) Log Message: ----------- Test for NH-1488 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Domain.cs 2008-09-18 23:38:53 UTC (rev 3768) @@ -0,0 +1,96 @@ +namespace NHibernate.Test.NHSpecificTest.NH1488 +{ + public abstract class Category + { + private int id; + private string name; + protected Category() {} + protected Category(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } + + public class CustomerCategory : Category + { + public CustomerCategory() {} + public CustomerCategory(string name) : base(name) {} + } + public class OtherCategory : Category + { + public OtherCategory() {} + public OtherCategory(string name) : base(name) {} + } + + public class CustomerNoSmart + { + private Category category; + private int id; + private string name; + public CustomerNoSmart() {} + public CustomerNoSmart(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual Category Category + { + get { return category; } + set { category = value; } + } + } + + public class Customer + { + private CustomerCategory category; + private int id; + private string name; + public Customer() { } + public Customer(string name) + { + this.name = name; + } + + public virtual int Id + { + get { return id; } + set { id = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + + public virtual CustomerCategory Category + { + get { return category; } + set { category = value; } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Fixture.cs 2008-09-18 23:38:53 UTC (rev 3768) @@ -0,0 +1,69 @@ +using System.Collections; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.NHSpecificTest.NH1488 +{ + // http://jira.nhibernate.org/browse/NH-1488 + [TestFixture] + public class Fixture : BugTestCase + { + [Test] + public void WorkBut() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(new CustomerNoSmart("Somebody")); + CustomerNoSmart c = new CustomerNoSmart("Somebody else"); + c.Category = new CustomerCategory("User"); + s.Save(c.Category); + s.Save(c); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + IList result = s.CreateQuery("select c.Name, cat.Name from CustomerNoSmart c left outer join c.Category cat").List(); + Assert.That(result.Count, Is.EqualTo(2)); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from CustomerNoSmart"); + s.Delete("from Category"); + tx.Commit(); + } + } + + [Test, Ignore("Not supported.")] + public void PerhapsBug() + { + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(new Customer("Somebody")); + Customer c = new Customer("Somebody else"); + c.Category = new CustomerCategory("User"); + s.Save(c.Category); + s.Save(c); + tx.Commit(); + } + + using (ISession s = OpenSession()) + { + IList result = s.CreateQuery("select c.Name, cat.Name from Customer c left outer join c.Category cat").List(); + Assert.That(result.Count, Is.EqualTo(2), "should return Customers, on left outer join, even empty Category"); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete("from Customer"); + s.Delete("from Category"); + tx.Commit(); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1488/Mappings.hbm.xml 2008-09-18 23:38:53 UTC (rev 3768) @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1488"> + + <class name="Category" table="Category" abstract="true"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <discriminator column="Type" length="1" /> + <property name="Name" not-null="true" /> + <subclass name="CustomerCategory" discriminator-value="C"/> + </class> + + <class name="Customer" table="Customer"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <property name="Name" not-null="true" /> + <many-to-one name="Category" lazy="false" column="Category_Id"/> + </class> + + <class name="CustomerNoSmart" table="CustomerNoSmart"> + <id name="Id" column="Id"> + <generator class="native" /> + </id> + <property name="Name" not-null="true" /> + <many-to-one name="Category" lazy="false" column="Category_Id"/> + </class> +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-18 23:26:51 UTC (rev 3767) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-18 23:38:53 UTC (rev 3768) @@ -473,6 +473,8 @@ <Compile Include="NHSpecificTest\NH1483\BaseClass.cs" /> <Compile Include="NHSpecificTest\NH1483\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1483\SubClass.cs" /> + <Compile Include="NHSpecificTest\NH1488\Domain.cs" /> + <Compile Include="NHSpecificTest\NH1488\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Fixture.cs" /> <Compile Include="NHSpecificTest\NH280\Foo.cs" /> <Compile Include="NHSpecificTest\NH1018\Employee.cs" /> @@ -1460,6 +1462,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1488\Mappings.hbm.xml" /> <EmbeddedResource Include="Extendshbm\allinone.hbm.xml" /> <EmbeddedResource Include="Extendshbm\allseparateinone.hbm.xml" /> <EmbeddedResource Include="Extendshbm\Customer.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |