|
From: <fab...@us...> - 2011-05-17 23:07:18
|
Revision: 5837
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5837&view=rev
Author: fabiomaulo
Date: 2011-05-17 23:07:11 +0000 (Tue, 17 May 2011)
Log Message:
-----------
No failing test for NH-1845
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Category.cs 2011-05-17 23:07:11 UTC (rev 5837)
@@ -0,0 +1,53 @@
+using System.Collections.Generic;
+
+namespace NHibernate.Test.NHSpecificTest.NH1845
+{
+ public class Category
+ {
+ private readonly IList<Category> subcategories = new List<Category>();
+
+ public Category() : this("") {}
+
+ public Category(string name)
+ {
+ Name = name;
+ }
+
+ public virtual int Id { get; set; }
+
+ public virtual string Name { get; set; }
+
+ public virtual Category Parent { get; set; }
+
+ public virtual IList<Category> Subcategories
+ {
+ get { return subcategories; }
+ }
+
+ public virtual void AddSubcategory(Category subcategory)
+ {
+ subcategories.Add(subcategory);
+ subcategory.Parent = this;
+ }
+
+ public override string ToString()
+ {
+ return Name;
+ }
+
+ public override bool Equals(object obj)
+ {
+ var other = obj as Category;
+ if (other == null)
+ {
+ return false;
+ }
+ return other.Name == Name;
+ }
+
+ public override int GetHashCode()
+ {
+ return Name.GetHashCode();
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1845/Fixture.cs 2011-05-17 23:07:11 UTC (rev 5837)
@@ -0,0 +1,62 @@
+using NHibernate.Cfg.MappingSchema;
+using NHibernate.Mapping.ByCode;
+using NUnit.Framework;
+namespace NHibernate.Test.NHSpecificTest.NH1845
+{
+ public class Fixture: TestCaseMappingByCode
+ {
+
+ protected override HbmMapping GetMappings()
+ {
+ var mapper = new ModelMapper();
+ mapper.Class<Category>(rc =>
+ {
+ rc.Id(x=> x.Id, map=> map.Generator(Generators.Native));
+ rc.Property(x=> x.Name);
+ rc.ManyToOne(x=> x.Parent, map=> map.Column("ParentId"));
+ rc.Bag(x => x.Subcategories, map =>
+ {
+ map.Access(Accessor.NoSetter);
+ map.Key(km=> km.Column("ParentId"));
+ map.Cascade(Mapping.ByCode.Cascade.All.Include(Mapping.ByCode.Cascade.DeleteOrphans));
+ }, rel => rel.OneToMany());
+ });
+ var mappings = mapper.CompileMappingForAllExplicitAddedEntities();
+ return mappings;
+ }
+
+ [Test]
+ public void LazyLoad_Initialize_AndEvict()
+ {
+ Category category = new Category("parent");
+ category.AddSubcategory(new Category("child"));
+ SaveCategory(category);
+
+ using (ISession session = OpenSession())
+ using (ITransaction transaction = session.BeginTransaction())
+ {
+ Category loaded = session.Load<Category>(category.Id);
+ NHibernateUtil.Initialize(loaded.Subcategories[0]);
+ session.Evict(loaded);
+ transaction.Commit();
+ Assert.AreEqual("child", loaded.Subcategories[0].Name, "cannot access child");
+ }
+ using (ISession session = OpenSession())
+ using (ITransaction transaction = session.BeginTransaction())
+ {
+ session.CreateQuery("delete from Category").ExecuteUpdate();
+ transaction.Commit();
+ }
+ }
+
+ private void SaveCategory(Category category)
+ {
+ using (ISession session = OpenSession())
+ using (ITransaction transaction = session.BeginTransaction())
+ {
+ session.SaveOrUpdate(category);
+ transaction.Commit();
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-17 22:33:17 UTC (rev 5836)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-17 23:07:11 UTC (rev 5837)
@@ -657,6 +657,8 @@
<Compile Include="NHSpecificTest\NH1836\Entity.cs" />
<Compile Include="NHSpecificTest\NH1836\EntityDTO.cs" />
<Compile Include="NHSpecificTest\NH1836\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1845\Category.cs" />
+ <Compile Include="NHSpecificTest\NH1845\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1869\Entities.cs" />
<Compile Include="NHSpecificTest\NH1869\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1925\Fixture.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|