Skip to content

Commit b1374be

Browse files
committed
tests
1 parent b743c9e commit b1374be

File tree

2 files changed

+97
-4
lines changed

2 files changed

+97
-4
lines changed

src/NHibernate.Test/Async/GenericTest/BagGeneric/BagGenericFixture.cs

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
//------------------------------------------------------------------------------
99

1010

11-
using System;
1211
using System.Collections.Generic;
13-
using System.Text;
12+
using System.Linq;
13+
using NHibernate.Collection;
14+
using NHibernate.Util;
1415
using NUnit.Framework;
1516

1617
namespace NHibernate.Test.GenericTest.BagGeneric
1718
{
1819
using System.Threading.Tasks;
20+
using System.Threading;
1921
[TestFixture]
2022
public class BagGenericFixtureAsync : TestCase
2123
{
@@ -74,6 +76,51 @@ public async Task SimpleAsync()
7476
s.Close();
7577
}
7678

79+
[Test]
80+
public async Task EqualsSnapshotAsync()
81+
{
82+
var a = new A {Name = "first generic type"};
83+
var i0 = new B {Name = "1"};
84+
var i4 = new B {Name = "4"};
85+
a.Items = new List<B>
86+
{
87+
i0,
88+
i0,
89+
new B {Name = "2"},
90+
new B {Name = "3"},
91+
i4,
92+
i4,
93+
};
94+
var lastIdx = a.Items.Count - 1;
95+
using (var s = OpenSession())
96+
{
97+
await (s.SaveAsync(a));
98+
await (s.FlushAsync());
99+
var collection = (IPersistentCollection) a.Items;
100+
var collectionPersister = Sfi.GetCollectionPersister(collection.Role);
101+
102+
a.Items[0] = i4;
103+
Assert.Multiple(
104+
async () =>
105+
{
106+
Assert.That(await (collection.EqualsSnapshotAsync(collectionPersister, CancellationToken.None)), Is.False, "modify first collection element");
107+
108+
a.Items[lastIdx] = i0;
109+
Assert.That(await (collection.EqualsSnapshotAsync(collectionPersister, CancellationToken.None)), Is.True, "swap elements in collection");
110+
111+
a.Items[0] = i0;
112+
a.Items[lastIdx] = i0;
113+
Assert.That(await (collection.EqualsSnapshotAsync(collectionPersister, CancellationToken.None)), Is.False, "modify last collection element");
114+
115+
a.Items[lastIdx] = i4;
116+
var reversed = a.Items.Reverse().ToArray();
117+
a.Items.Clear();
118+
ArrayHelper.AddAll(a.Items, reversed);
119+
Assert.That(await (collection.EqualsSnapshotAsync(collectionPersister, CancellationToken.None)), Is.True, "reverse collection elements");
120+
});
121+
}
122+
}
123+
77124
[Test]
78125
public async Task CopyAsync()
79126
{

src/NHibernate.Test/GenericTest/BagGeneric/BagGenericFixture.cs

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
using System;
21
using System.Collections.Generic;
3-
using System.Text;
2+
using System.Linq;
3+
using NHibernate.Collection;
4+
using NHibernate.Util;
45
using NUnit.Framework;
56

67
namespace NHibernate.Test.GenericTest.BagGeneric
@@ -63,6 +64,51 @@ public void Simple()
6364
s.Close();
6465
}
6566

67+
[Test]
68+
public void EqualsSnapshot()
69+
{
70+
var a = new A {Name = "first generic type"};
71+
var i0 = new B {Name = "1"};
72+
var i4 = new B {Name = "4"};
73+
a.Items = new List<B>
74+
{
75+
i0,
76+
i0,
77+
new B {Name = "2"},
78+
new B {Name = "3"},
79+
i4,
80+
i4,
81+
};
82+
var lastIdx = a.Items.Count - 1;
83+
using (var s = OpenSession())
84+
{
85+
s.Save(a);
86+
s.Flush();
87+
var collection = (IPersistentCollection) a.Items;
88+
var collectionPersister = Sfi.GetCollectionPersister(collection.Role);
89+
90+
a.Items[0] = i4;
91+
Assert.Multiple(
92+
() =>
93+
{
94+
Assert.That(collection.EqualsSnapshot(collectionPersister), Is.False, "modify first collection element");
95+
96+
a.Items[lastIdx] = i0;
97+
Assert.That(collection.EqualsSnapshot(collectionPersister), Is.True, "swap elements in collection");
98+
99+
a.Items[0] = i0;
100+
a.Items[lastIdx] = i0;
101+
Assert.That(collection.EqualsSnapshot(collectionPersister), Is.False, "modify last collection element");
102+
103+
a.Items[lastIdx] = i4;
104+
var reversed = a.Items.Reverse().ToArray();
105+
a.Items.Clear();
106+
ArrayHelper.AddAll(a.Items, reversed);
107+
Assert.That(collection.EqualsSnapshot(collectionPersister), Is.True, "reverse collection elements");
108+
});
109+
}
110+
}
111+
66112
[Test]
67113
public void Copy()
68114
{

0 commit comments

Comments
 (0)