|
From: <fab...@us...> - 2009-01-10 12:47:37
|
Revision: 3985
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3985&view=rev
Author: fabiomaulo
Date: 2009-01-10 12:47:32 +0000 (Sat, 10 Jan 2009)
Log Message:
-----------
Test for NH-1584
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Calico.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Cat.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/CoatPattern.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Female.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Male.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Tabby.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/TestFixture.cs
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Calico.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Calico.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Calico.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,19 @@
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ /// <summary>
+ /// This class describes a few of the attributes possbile for a "Calico" coat.
+ /// </summary>
+ public class Calico : CoatPattern
+ {
+ public Calico()
+ {
+ Description = "Orange, black and white coloration.";
+ }
+
+ public virtual Female Cat { get; set; }
+
+ public virtual bool HasPatches { get; set; }
+
+ public virtual bool IsMottled { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Cat.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Cat.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Cat.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,9 @@
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ public abstract class Cat
+ {
+ public virtual int Id { get; private set; }
+
+ public virtual string Name { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/CoatPattern.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/CoatPattern.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/CoatPattern.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,9 @@
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ public abstract class CoatPattern
+ {
+ public virtual int Id { get; private set; }
+
+ public virtual string Description { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Female.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Female.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Female.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,23 @@
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ /// <summary>
+ /// This class assumes that all female cats have a calico coat (which is not actually true).
+ /// </summary>
+ public class Female : Cat
+ {
+ private Calico _coat;
+
+ public virtual Calico Coat
+ {
+ get { return _coat; }
+ set
+ {
+ if (value != null)
+ {
+ _coat = value;
+ _coat.Cat = this;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Male.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Male.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Male.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,23 @@
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ /// <summary>
+ /// This class assumes that all male cats have a tabby coat pattern (which is not true).
+ /// </summary>
+ public class Male : Cat
+ {
+ private Tabby _coat;
+
+ public virtual Tabby Coat
+ {
+ get { return _coat; }
+ set
+ {
+ if (value != null)
+ {
+ _coat = value;
+ _coat.Cat = this;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Mappings.hbm.xml 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1584" >
+ <class name="Cat" abstract="true" >
+ <id name="Id" unsaved-value="0">
+ <generator class="native"/>
+ </id>
+ <property name="Name"/>
+
+ <joined-subclass name="Male">
+ <key column="CatId"/>
+ <one-to-one name="Coat" cascade="all"/>
+ </joined-subclass>
+
+ <joined-subclass name="Female">
+ <key column="CatId"/>
+ <one-to-one name="Coat" cascade="all"/>
+ </joined-subclass>
+ </class>
+
+ <class name="Tabby">
+ <id name="Id">
+ <generator class="foreign">
+ <param name="property">Cat</param>
+ </generator>
+ </id>
+ <property name="HasSpots" />
+ <property name="HasStripes" />
+ <property name="HasSwirls" />
+ <one-to-one name="Cat" constrained="true"/>
+ </class>
+
+ <class name="Calico">
+ <id name="Id">
+ <generator class="foreign">
+ <param name="property">Cat</param>
+ </generator>
+ </id>
+ <property name="HasPatches" />
+ <property name="IsMottled" />
+ <one-to-one name="Cat" constrained="true"/>
+ </class>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Tabby.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Tabby.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/Tabby.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,21 @@
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ /// <summary>
+ /// This class describes a few of the properties of a "Tabby" coat pattern.
+ /// </summary>
+ public class Tabby : CoatPattern
+ {
+ public Tabby()
+ {
+ Description = "A distinctive coat that features stripes, dots, or swirling patterns.";
+ }
+
+ public virtual Male Cat { get; set; }
+
+ public virtual bool HasSpots { get; set; }
+
+ public virtual bool HasStripes { get; set; }
+
+ public virtual bool HasSwirls { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/TestFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/TestFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1584/TestFixture.cs 2009-01-10 12:47:32 UTC (rev 3985)
@@ -0,0 +1,60 @@
+/*
+ The documentation for NHibernate likes to work with cats / kittens for examples or demonstrations.
+*/
+using NHibernate.Criterion;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1584
+{
+ [TestFixture, Ignore("Not supported yet.")]
+ public class TestFixture : BugTestCase
+ {
+ public override string BugNumber
+ {
+ get { return "NH1584"; }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (ISession session = OpenSession())
+ {
+ using (ITransaction trx = session.BeginTransaction())
+ {
+ session.Delete("from Male");
+ trx.Commit();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Demostrate that the session is able to load the one-to-one composition between a joined subclass and its related entity.
+ /// </summary>
+ [Test]
+ public void Load_One_To_One_Composition_For_Joined_Subclass_Succeeds()
+ {
+ var tabby = new Tabby {HasSpots = true, HasStripes = true, HasSwirls = false};
+
+ var newInstance = new Male {Name = "Male", Coat = tabby};
+
+ using (ISession session = OpenSession())
+ {
+ using (ITransaction trx = session.BeginTransaction())
+ {
+ session.Save(newInstance);
+ trx.Commit();
+ }
+ }
+
+ Assert.AreNotEqual(0, newInstance.Id);
+ Assert.AreNotEqual(0, tabby.Id);
+
+ using (ISession session = OpenSession())
+ {
+ ICriteria criteria = session.CreateCriteria(typeof (Cat));
+ var loaded = criteria.Add(Restrictions.Eq("Id", newInstance.Id)).UniqueResult<Male>();
+
+ Assert.IsNotNull(loaded.Coat);
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-01-10 02:25:05 UTC (rev 3984)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-01-10 12:47:32 UTC (rev 3985)
@@ -382,6 +382,13 @@
<Compile Include="NHSpecificTest\NH1549\EntityInt32.cs" />
<Compile Include="NHSpecificTest\NH1549\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1549\ProductWithInheritedId.cs" />
+ <Compile Include="NHSpecificTest\NH1584\Calico.cs" />
+ <Compile Include="NHSpecificTest\NH1584\Cat.cs" />
+ <Compile Include="NHSpecificTest\NH1584\CoatPattern.cs" />
+ <Compile Include="NHSpecificTest\NH1584\Female.cs" />
+ <Compile Include="NHSpecificTest\NH1584\Male.cs" />
+ <Compile Include="NHSpecificTest\NH1584\Tabby.cs" />
+ <Compile Include="NHSpecificTest\NH1584\TestFixture.cs" />
<Compile Include="NHSpecificTest\NH1605\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1609\Entities.cs" />
<Compile Include="NHSpecificTest\NH1609\Fixture.cs" />
@@ -1590,6 +1597,7 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1584\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1632\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1612\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1549\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|