Skip to content

Commit 73a9fec

Browse files
maca88hazzik
authored andcommitted
NH-3905 - Async for Linq and Future
1 parent 15e3a27 commit 73a9fec

29 files changed

+2836
-188
lines changed

src/NHibernate.Test/Futures/FallbackFixture.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void FutureOfCriteriaFallsBackToListImplementationWhenQueryBatchingIsNotS
6363
using (var session = Sfi.OpenSession())
6464
{
6565
var results = session.CreateCriteria<Person>().Future<Person>();
66-
results.GetEnumerator().MoveNext();
66+
results.GetEnumerable().GetEnumerator().MoveNext();
6767
}
6868
}
6969

@@ -101,7 +101,7 @@ public void FutureOfQueryFallsBackToListImplementationWhenQueryBatchingIsNotSupp
101101
using (var session = Sfi.OpenSession())
102102
{
103103
var results = session.CreateQuery("from Person").Future<Person>();
104-
results.GetEnumerator().MoveNext();
104+
results.GetEnumerable().GetEnumerator().MoveNext();
105105
}
106106
}
107107

@@ -138,7 +138,7 @@ public void FutureOfLinqFallsBackToListImplementationWhenQueryBatchingIsNotSuppo
138138
using (var session = Sfi.OpenSession())
139139
{
140140
var results = session.Query<Person>().ToFuture();
141-
results.GetEnumerator().MoveNext();
141+
results.GetEnumerable().GetEnumerator().MoveNext();
142142
}
143143
}
144144

@@ -182,4 +182,4 @@ private int CreatePerson()
182182
}
183183
}
184184
}
185-
}
185+
}

src/NHibernate.Test/Futures/FutureCriteriaFixture.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void DefaultReadOnlyTest()
1717

1818
var persons = s.CreateCriteria(typeof(Person)).Future<Person>();
1919

20-
Assert.IsTrue(persons.All(p => s.IsReadOnly(p)));
20+
Assert.IsTrue(persons.GetEnumerable().All(p => s.IsReadOnly(p)));
2121
}
2222
}
2323

@@ -37,12 +37,12 @@ public void CanUseFutureCriteria()
3737

3838
using (var logSpy = new SqlLogSpy())
3939
{
40-
foreach (var person in persons5)
40+
foreach (var person in persons5.GetEnumerable())
4141
{
4242

4343
}
4444

45-
foreach (var person in persons10)
45+
foreach (var person in persons10.GetEnumerable())
4646
{
4747

4848
}
@@ -66,13 +66,13 @@ public void TwoFuturesRunInTwoRoundTrips()
6666
.SetMaxResults(10)
6767
.Future<Person>();
6868

69-
foreach (var person in persons10) { } // fire first future round-trip
69+
foreach (var person in persons10.GetEnumerable()) { } // fire first future round-trip
7070

7171
var persons5 = s.CreateCriteria(typeof(Person))
7272
.SetMaxResults(5)
7373
.Future<int>();
7474

75-
foreach (var person in persons5) { } // fire second future round-trip
75+
foreach (var person in persons5.GetEnumerable()) { } // fire second future round-trip
7676

7777
var events = logSpy.Appender.GetEvents();
7878
Assert.AreEqual(2, events.Length);
@@ -99,7 +99,7 @@ public void CanCombineSingleFutureValueWithEnumerableFutures()
9999
{
100100
int count = personCount.Value;
101101

102-
foreach (var person in persons)
102+
foreach (var person in persons.GetEnumerable())
103103
{
104104

105105
}

src/NHibernate.Test/Futures/FutureQueryFixture.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void DefaultReadOnlyTest()
1717

1818
var persons = s.CreateQuery("from Person").Future<Person>();
1919

20-
Assert.IsTrue(persons.All(p => s.IsReadOnly(p)));
20+
Assert.IsTrue(persons.GetEnumerable().All(p => s.IsReadOnly(p)));
2121
}
2222
}
2323

@@ -37,12 +37,12 @@ public void CanUseFutureQuery()
3737

3838
using (var logSpy = new SqlLogSpy())
3939
{
40-
foreach (var person in persons5)
40+
foreach (var person in persons5.GetEnumerable())
4141
{
4242

4343
}
4444

45-
foreach (var person in persons10)
45+
foreach (var person in persons10.GetEnumerable())
4646
{
4747

4848
}
@@ -66,13 +66,13 @@ public void TwoFuturesRunInTwoRoundTrips()
6666
.SetMaxResults(10)
6767
.Future<Person>();
6868

69-
foreach (var person in persons10) { } // fire first future round-trip
69+
foreach (var person in persons10.GetEnumerable()) { } // fire first future round-trip
7070

7171
var persons5 = s.CreateQuery("from Person")
7272
.SetMaxResults(5)
7373
.Future<int>();
7474

75-
foreach (var person in persons5) { } // fire second future round-trip
75+
foreach (var person in persons5.GetEnumerable()) { } // fire second future round-trip
7676

7777
var events = logSpy.Appender.GetEvents();
7878
Assert.AreEqual(2, events.Length);
@@ -98,7 +98,7 @@ public void CanCombineSingleFutureValueWithEnumerableFutures()
9898
{
9999
long count = personCount.Value;
100100

101-
foreach (var person in persons)
101+
foreach (var person in persons.GetEnumerable())
102102
{
103103
}
104104

@@ -127,7 +127,7 @@ public void CanExecuteMultipleQueryWithSameParameterName()
127127
{
128128
var me = meContainer.Value;
129129

130-
foreach (var person in possiblefriends)
130+
foreach (var person in possiblefriends.GetEnumerable())
131131
{
132132
}
133133

src/NHibernate.Test/Futures/FutureQueryOverFixture.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void DefaultReadOnlyTest()
3939

4040
var persons = s.QueryOver<Person>().Future<Person>();
4141

42-
Assert.IsTrue(persons.All(p => s.IsReadOnly(p)));
42+
Assert.IsTrue(persons.GetEnumerable().All(p => s.IsReadOnly(p)));
4343
}
4444
}
4545

@@ -61,11 +61,11 @@ public void CanUseFutureCriteria()
6161
using (var logSpy = new SqlLogSpy())
6262
{
6363
int actualPersons5Count = 0;
64-
foreach (var person in persons5)
64+
foreach (var person in persons5.GetEnumerable())
6565
actualPersons5Count++;
6666

6767
int actualPersons10Count = 0;
68-
foreach (var person in persons10)
68+
foreach (var person in persons10.GetEnumerable())
6969
actualPersons10Count++;
7070

7171
var events = logSpy.Appender.GetEvents();
@@ -90,14 +90,14 @@ public void TwoFuturesRunInTwoRoundTrips()
9090
.Take(10)
9191
.Future();
9292

93-
foreach (var person in persons10) { } // fire first future round-trip
93+
foreach (var person in persons10.GetEnumerable()) { } // fire first future round-trip
9494

9595
var persons5 = s.QueryOver<Person>()
9696
.Select(p => p.Id)
9797
.Take(5)
9898
.Future<int>();
9999

100-
foreach (var person in persons5) { } // fire second future round-trip
100+
foreach (var person in persons5.GetEnumerable()) { } // fire second future round-trip
101101

102102
var events = logSpy.Appender.GetEvents();
103103
Assert.AreEqual(2, events.Length);
@@ -128,7 +128,7 @@ public void CanCombineSingleFutureValueWithEnumerableFutures()
128128
Person singlePersonValue = singlePerson.Value;
129129
int personId = personIds.Value;
130130

131-
foreach (var person in persons)
131+
foreach (var person in persons.GetEnumerable())
132132
{
133133

134134
}

src/NHibernate.Test/Futures/LinqFutureFixture.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public void DefaultReadOnlyTest()
1818

1919
var persons = s.Query<Person>().ToFuture();
2020

21-
Assert.IsTrue(persons.All(p => s.IsReadOnly(p)));
21+
Assert.IsTrue(persons.GetEnumerable().All(p => s.IsReadOnly(p)));
2222
}
2323
}
2424

@@ -64,7 +64,7 @@ public void CanUseToFutureWithContains()
6464
.FetchMany(p => p.Children)
6565
.Skip(5)
6666
.Take(10)
67-
.ToFuture().ToList();
67+
.ToFuture().GetEnumerable().ToList();
6868

6969
Assert.IsNotNull(persons10);
7070
}
@@ -79,6 +79,7 @@ public void CanUseToFutureWithContains2()
7979
var persons10 = s.Query<Person>()
8080
.Where(p => ids.Contains(p.Id))
8181
.ToFuture()
82+
.GetEnumerable()
8283
.ToList();
8384

8485
Assert.IsNotNull(persons10);
@@ -116,9 +117,9 @@ public void CanUseSkipAndFetchManyWithToFuture()
116117

117118
using (var logSpy = new SqlLogSpy())
118119
{
119-
foreach (var person in persons5) { }
120+
foreach (var person in persons5.GetEnumerable()) { }
120121

121-
foreach (var person in persons10) { }
122+
foreach (var person in persons10.GetEnumerable()) { }
122123

123124
var events = logSpy.Appender.GetEvents();
124125
Assert.AreEqual(1, events.Length);
@@ -149,11 +150,11 @@ public void CanUseFutureQuery()
149150

150151
using (var logSpy = new SqlLogSpy())
151152
{
152-
foreach (var person in persons5)
153+
foreach (var person in persons5.GetEnumerable())
153154
{
154155
}
155156

156-
foreach (var person in persons10)
157+
foreach (var person in persons10.GetEnumerable())
157158
{
158159
}
159160

@@ -180,8 +181,8 @@ public void CanUseFutureQueryWithAnonymousType()
180181

181182
using (var logSpy = new SqlLogSpy())
182183
{
183-
persons5.ToList(); // initialize the enumerable
184-
persons.ToList();
184+
persons5.GetEnumerable().ToList(); // initialize the enumerable
185+
persons.GetEnumerable().ToList();
185186

186187
var events = logSpy.Appender.GetEvents();
187188
Assert.AreEqual(1, events.Length);
@@ -220,8 +221,8 @@ public void CanUseFutureFetchQuery()
220221
using (var logSpy = new SqlLogSpy())
221222
{
222223

223-
Assert.That(persons.Any(x => x.Children.Any()), "No children found");
224-
Assert.That(persons10.Any(x => x.Children.Any()), "No children found");
224+
Assert.That(persons.GetEnumerable().Any(x => x.Children.Any()), "No children found");
225+
Assert.That(persons10.GetEnumerable().Any(x => x.Children.Any()), "No children found");
225226

226227
var events = logSpy.Appender.GetEvents();
227228
Assert.AreEqual(1, events.Length);
@@ -249,13 +250,13 @@ public void TwoFuturesRunInTwoRoundTrips()
249250
.Take(10)
250251
.ToFuture();
251252

252-
foreach (var person in persons10) { } // fire first future round-trip
253+
foreach (var person in persons10.GetEnumerable()) { } // fire first future round-trip
253254

254255
var persons5 = s.Query<Person>()
255256
.Take(5)
256257
.ToFuture();
257258

258-
foreach (var person in persons5) { } // fire second future round-trip
259+
foreach (var person in persons5.GetEnumerable()) { } // fire second future round-trip
259260

260261
var events = logSpy.Appender.GetEvents();
261262
Assert.AreEqual(2, events.Length);
@@ -282,7 +283,7 @@ public void CanCombineSingleFutureValueWithEnumerableFutures()
282283
{
283284
long count = personCount.Value;
284285

285-
foreach (var person in persons)
286+
foreach (var person in persons.GetEnumerable())
286287
{
287288
}
288289

@@ -345,7 +346,7 @@ public void CanExecuteMultipleQueriesOnSameExpression()
345346
{
346347
var me = meContainer.Value;
347348

348-
foreach (var person in possiblefriends)
349+
foreach (var person in possiblefriends.GetEnumerable())
349350
{
350351
}
351352

src/NHibernate.Test/NHSpecificTest/NH2189/Fixture.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ public void FutureQueryReturnsExistingProxy()
6363
Policy policyProxy = s.Load<Policy>(_policy2Id);
6464
Assert.That(NHibernateUtil.IsInitialized(policyProxy), Is.False);
6565

66-
IEnumerable<Policy> futurePolicy =
66+
var futurePolicy =
6767
s.CreateQuery("FROM Policy p where p.Id = :id")
6868
.SetParameter("id", _policy2Id)
6969
.Future<Policy>();
7070

71-
Policy queriedPolicy = futurePolicy.ElementAt(0);
71+
Policy queriedPolicy = futurePolicy.GetEnumerable().ElementAt(0);
7272
Assert.That(NHibernateUtil.IsInitialized(queriedPolicy));
7373
Assert.That(queriedPolicy, Is.SameAs(policyProxy));
7474
}
@@ -83,12 +83,12 @@ public void FutureCriteriaReturnsExistingProxy()
8383
Policy policyProxy = s.Load<Policy>(_policy2Id);
8484
Assert.That(NHibernateUtil.IsInitialized(policyProxy), Is.False);
8585

86-
IEnumerable<Policy> futurePolicy =
86+
var futurePolicy =
8787
s.CreateCriteria<Policy>()
8888
.Add(Restrictions.Eq("Id", _policy2Id))
8989
.Future<Policy>();
9090

91-
Policy queriedPolicy = futurePolicy.ElementAt(0);
91+
Policy queriedPolicy = futurePolicy.GetEnumerable().ElementAt(0);
9292
Assert.That(NHibernateUtil.IsInitialized(queriedPolicy));
9393
Assert.That(queriedPolicy, Is.SameAs(policyProxy));
9494
}
@@ -110,15 +110,15 @@ public void FutureQueryEagerLoadUsesAlreadyLoadedEntity()
110110
Assert.That(NHibernateUtil.IsInitialized(policy2.Tasks.ElementAt(0)));
111111
Assert.That(NHibernateUtil.IsInitialized(policy2.Tasks.ElementAt(1)));
112112

113-
IEnumerable<Task> tasks = s.CreateQuery("SELECT t FROM Task t " +
113+
var tasks = s.CreateQuery("SELECT t FROM Task t " +
114114
"INNER JOIN FETCH t.TeamMember ORDER BY t.TaskName")
115115
.Future<Task>();
116116

117-
Assert.That(tasks.Count(), Is.EqualTo(3));
117+
Assert.That(tasks.GetEnumerable().Count(), Is.EqualTo(3));
118118

119-
Assert.That(NHibernateUtil.IsInitialized(tasks.ElementAt(0).TeamMember), Is.True, "Task1 TeamMember not initialized");
120-
Assert.That(NHibernateUtil.IsInitialized(tasks.ElementAt(1).TeamMember), Is.True, "Task2 TeamMember not initialized");
121-
Assert.That(NHibernateUtil.IsInitialized(tasks.ElementAt(2).TeamMember), Is.True, "Task3 TeamMember not initialized");
119+
Assert.That(NHibernateUtil.IsInitialized(tasks.GetEnumerable().ElementAt(0).TeamMember), Is.True, "Task1 TeamMember not initialized");
120+
Assert.That(NHibernateUtil.IsInitialized(tasks.GetEnumerable().ElementAt(1).TeamMember), Is.True, "Task2 TeamMember not initialized");
121+
Assert.That(NHibernateUtil.IsInitialized(tasks.GetEnumerable().ElementAt(2).TeamMember), Is.True, "Task3 TeamMember not initialized");
122122
}
123123
}
124124

@@ -138,17 +138,17 @@ public void FutureCriteriaEagerLoadUsesAlreadyLoadedEntity()
138138
Assert.That(NHibernateUtil.IsInitialized(policy2.Tasks.ElementAt(0)));
139139
Assert.That(NHibernateUtil.IsInitialized(policy2.Tasks.ElementAt(1)));
140140

141-
IEnumerable<Task> tasks =
141+
var tasks =
142142
s.CreateCriteria<Task>()
143143
.SetFetchMode("TeamMember", FetchMode.Eager)
144144
.AddOrder(Order.Asc("TaskName"))
145145
.Future<Task>();
146146

147-
Assert.That(tasks.Count(), Is.EqualTo(3));
147+
Assert.That(tasks.GetEnumerable().Count(), Is.EqualTo(3));
148148

149-
Assert.That(NHibernateUtil.IsInitialized(tasks.ElementAt(0).TeamMember), Is.True, "Task1 TeamMember not initialized");
150-
Assert.That(NHibernateUtil.IsInitialized(tasks.ElementAt(1).TeamMember), Is.True, "Task2 TeamMember not initialized");
151-
Assert.That(NHibernateUtil.IsInitialized(tasks.ElementAt(2).TeamMember), Is.True, "Task3 TeamMember not initialized");
149+
Assert.That(NHibernateUtil.IsInitialized(tasks.GetEnumerable().ElementAt(0).TeamMember), Is.True, "Task1 TeamMember not initialized");
150+
Assert.That(NHibernateUtil.IsInitialized(tasks.GetEnumerable().ElementAt(1).TeamMember), Is.True, "Task2 TeamMember not initialized");
151+
Assert.That(NHibernateUtil.IsInitialized(tasks.GetEnumerable().ElementAt(2).TeamMember), Is.True, "Task3 TeamMember not initialized");
152152
}
153153
}
154154
}

0 commit comments

Comments
 (0)