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