From: <aye...@us...> - 2008-11-26 04:19:52
|
Revision: 3930 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3930&view=rev Author: ayenderahien Date: 2008-11-26 04:19:41 +0000 (Wed, 26 Nov 2008) Log Message: ----------- Adding passing tests from Adrian Alexander for NH-298 Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298 ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Category.cs 2008-11-26 04:19:41 UTC (rev 3930) @@ -0,0 +1,42 @@ +using System.Collections.Generic; + +namespace NHibernate.Test.NHSpecificTest.NH298 { + + public class Category { + private int id; + private string name; + private IList<Category> subCategories; + private Category parentCategory; + + public int Id { + get { return id; } + set { id = value; } + } + + public string Name { + get { return name; } + set { name = value; } + } + + public IList<Category> SubCategories { + get { return subCategories; } + private set { subCategories = value; } + } + + public Category ParentCategory { + get { return parentCategory; } + set { parentCategory = value; } + } + + public Category( int id, string name, Category parent ) { + this.id = id; + this.name = name; + subCategories = new List<Category>(); + parentCategory = parent; + } + + protected Category() : this( 0, "Unknown Category", null ) { } + + public override string ToString() { return name; } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/IndexedBidirectionalOneToManyTest.cs 2008-11-26 04:19:41 UTC (rev 3930) @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using NHibernate.Dialect; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH298 { + + [TestFixture] + public class IndexedBidirectionalOneToManyTest : BugTestCase { + + protected override void OnSetUp() { + base.OnSetUp(); + using ( ISession session = this.OpenSession() ) { + Category root = new Category( 1, "Root", null ); + root.SubCategories.Add( new Category( 2, "First", root ) ); + root.SubCategories.Add( new Category( 3, "Second", root ) ); + root.SubCategories.Add( new Category( 4, "Third", root ) ); + + session.Save( root ); + session.Flush(); + } + } + + protected override void OnTearDown() { + base.OnTearDown(); + using ( ISession session = this.OpenSession() ) { + session.Delete( "from System.Object" ); + //session.CreateSQLQuery( "delete from Category" ).List(); + session.Flush(); + } + } + + [Test] + public void SubItemMovesCorrectly() { + Category root1 = null, itemToMove = null; + + using ( ISession session = this.OpenSession() ) { + root1 = session.Get<Category>( 1 ); + itemToMove = root1.SubCategories[1]; //get the middle item + root1.SubCategories.Remove( itemToMove ); //remove the middle item + root1.SubCategories.Add( itemToMove ); //re-add it to the end + + session.Update( root1 ); + session.Flush(); + } + + using ( ISession session = this.OpenSession() ) { + Category root2 = session.Get<Category>( 1 ); + Assert.AreEqual( root1.SubCategories.Count, root2.SubCategories.Count ); + Assert.AreEqual( root1.SubCategories[1].Id, root2.SubCategories[1].Id ); + Assert.AreEqual( root1.SubCategories[2].Id, root2.SubCategories[2].Id ); + Assert.AreEqual( itemToMove.Id, root1.SubCategories[2].Id ); + } + } + + [Test] + public void RemoveAtWorksCorrectly() { + Category root1 = null; + + using ( ISession session = this.OpenSession() ) { + root1 = session.Get<Category>( 1 ); + root1.SubCategories.RemoveAt( 1 ); + + session.Update( root1 ); + session.Flush(); + } + + using ( ISession session = this.OpenSession() ) { + Category root2 = session.Get<Category>( 1 ); + Assert.AreEqual( root1.SubCategories.Count, root2.SubCategories.Count ); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH298/Mappings.hbm.xml 2008-11-26 04:19:41 UTC (rev 3930) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" ?> + +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH298"> + + <class name="Category" lazy="false"> + <id name="Id"><generator class="assigned"/></id> + <property name="Name"/> + <list name="SubCategories" cascade="all"> + <key column="ParentCategoryID"/> + <index column="PositionInList"/> + <one-to-many class="Category"/> + </list> + <many-to-one name="ParentCategory" column="ParentCategoryID" insert="false" update="false"/> + </class> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-25 22:10:57 UTC (rev 3929) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-11-26 04:19:41 UTC (rev 3930) @@ -535,6 +535,8 @@ <Compile Include="NHSpecificTest\NH1054\NH1054Fixture.cs" /> <Compile Include="NHSpecificTest\NH1080\Domain.cs" /> <Compile Include="NHSpecificTest\NH1080\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH298\Category.cs" /> + <Compile Include="NHSpecificTest\NH298\IndexedBidirectionalOneToManyTest.cs" /> <Compile Include="NHSpecificTest\NH364\Invoice.cs" /> <Compile Include="NHSpecificTest\NH662\Domain.cs" /> <Compile Include="NHSpecificTest\NH662\Fixture.cs" /> @@ -1544,6 +1546,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH298\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1587\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1556\Mappings.hbm.xml" /> <EmbeddedResource Include="Tools\hbm2ddl\SchemaValidator\2_Version.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |