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