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