Skip to content

Commit 80789af

Browse files
committed
Tests for NH-3731
1 parent 5e3f957 commit 80789af

File tree

3 files changed

+146
-0
lines changed

3 files changed

+146
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace NHibernate.Test.NHSpecificTest.NH3731
5+
{
6+
[Serializable]
7+
class Parent
8+
{
9+
public Parent()
10+
{
11+
Children = new List<Child>();
12+
}
13+
14+
public virtual Guid Id { get; set; }
15+
public virtual string Name { get; set; }
16+
public virtual IList<Child> Children { get; set; }
17+
}
18+
19+
[Serializable]
20+
class Child
21+
{
22+
public virtual Guid Id { get; set; }
23+
public virtual string Name { get; set; }
24+
}
25+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
using System.IO;
2+
using System.Linq;
3+
using System.Runtime.Serialization.Formatters.Binary;
4+
using NHibernate.Cfg.MappingSchema;
5+
using NHibernate.Linq;
6+
using NHibernate.Mapping.ByCode;
7+
using NUnit.Framework;
8+
9+
namespace NHibernate.Test.NHSpecificTest.NH3731
10+
{
11+
public class ByCodeFixture : TestCaseMappingByCode
12+
{
13+
protected override HbmMapping GetMappings()
14+
{
15+
var mapper = new ModelMapper();
16+
mapper.Class<Parent>(rc =>
17+
{
18+
rc.Id(x => x.Id, m => m.Generator(Generators.GuidComb));
19+
rc.Property(x => x.Name);
20+
rc.List(
21+
x => x.Children,
22+
c =>
23+
{
24+
c.Cascade(Mapping.ByCode.Cascade.All | Mapping.ByCode.Cascade.DeleteOrphans);
25+
},
26+
x => x.OneToMany()
27+
);
28+
});
29+
mapper.Class<Child>(rc =>
30+
{
31+
rc.Id(x => x.Id, m => m.Generator(Generators.GuidComb));
32+
rc.Property(x => x.Name);
33+
});
34+
35+
return mapper.CompileMappingForAllExplicitlyAddedEntities();
36+
}
37+
38+
protected override void OnSetUp()
39+
{
40+
using (ISession session = OpenSession())
41+
using (ITransaction transaction = session.BeginTransaction())
42+
{
43+
var c1 = new Child { Name = "Child 1" };
44+
var c2 = new Child { Name = "Child 2" };
45+
var c3 = new Child { Name = "Child 3" };
46+
47+
var p = new Parent { Name = "Parent" };
48+
p.Children.Add(c1);
49+
p.Children.Add(c2);
50+
p.Children.Add(c3);
51+
52+
session.Save(p);
53+
54+
session.Flush();
55+
transaction.Commit();
56+
}
57+
}
58+
59+
protected override void OnTearDown()
60+
{
61+
using (ISession session = OpenSession())
62+
using (ITransaction transaction = session.BeginTransaction())
63+
{
64+
session.Delete("from System.Object");
65+
66+
session.Flush();
67+
transaction.Commit();
68+
}
69+
}
70+
71+
[Test]
72+
public void Serializing_Session_After_Reordering_Children_Should_Work()
73+
{
74+
using (ISession session = OpenSession())
75+
{
76+
using (ITransaction transaction = session.BeginTransaction())
77+
{
78+
var p = session.Query<Parent>().Single();
79+
var c = p.Children.Last();
80+
p.Children.Remove(c);
81+
p.Children.Insert(p.Children.Count - 1, c);
82+
session.Flush();
83+
transaction.Commit();
84+
}
85+
86+
using (MemoryStream stream = new MemoryStream())
87+
{
88+
BinaryFormatter formatter = new BinaryFormatter();
89+
formatter.Serialize(stream, session);
90+
91+
Assert.AreNotEqual(0, stream.Length);
92+
}
93+
}
94+
}
95+
96+
[Test]
97+
public void Serializing_Session_After_Deleting_First_Child_Should_Work()
98+
{
99+
using (ISession session = OpenSession())
100+
{
101+
using (ITransaction transaction = session.BeginTransaction())
102+
{
103+
var p = session.Query<Parent>().Single();
104+
p.Children.RemoveAt(0);
105+
session.Flush();
106+
transaction.Commit();
107+
}
108+
109+
using (MemoryStream stream = new MemoryStream())
110+
{
111+
BinaryFormatter formatter = new BinaryFormatter();
112+
formatter.Serialize(stream, session);
113+
114+
Assert.AreNotEqual(0, stream.Length);
115+
}
116+
}
117+
}
118+
}
119+
}

src/NHibernate.Test/NHibernate.Test.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,8 @@
695695
<Compile Include="NHSpecificTest\NH3570\BiFixture.cs" />
696696
<Compile Include="NHSpecificTest\NH3570\Model.cs" />
697697
<Compile Include="NHSpecificTest\NH3570\UniFixture.cs" />
698+
<Compile Include="NHSpecificTest\NH3731\Entity.cs" />
699+
<Compile Include="NHSpecificTest\NH3731\FixtureByCode.cs" />
698700
<Compile Include="NHSpecificTest\NH3620\Fixture.cs" />
699701
<Compile Include="NHSpecificTest\NH3620\TwoBlobs.cs" />
700702
<Compile Include="NHSpecificTest\NH3455\Address.cs" />

0 commit comments

Comments
 (0)