forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQueryReuseTests.cs
143 lines (113 loc) · 3.36 KB
/
QueryReuseTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System.Collections.Generic;
using System.Linq;
using NHibernate.DomainModel.Northwind.Entities;
using NUnit.Framework;
namespace NHibernate.Test.Linq
{
[TestFixture]
public class QueryReuseTests : LinqTestCase
{
private IQueryable<User> _query;
protected override void OnSetUp()
{
base.OnSetUp();
_query = db.Users;
}
private void AssertQueryReuseable()
{
IList<User> users = _query.ToList();
Assert.AreEqual(3, users.Count);
}
[Test]
public void CanReuseAfterFirst()
{
var user = _query.First(u => u.Name == "rahien");
Assert.IsNotNull(user);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterFirstOrDefault()
{
var user = _query.FirstOrDefault(u => u.Name == "rahien");
Assert.IsNotNull(user);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterSingle()
{
var user = _query.Single(u => u.Name == "rahien");
Assert.IsNotNull(user);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterSingleOrDefault()
{
User user = _query.SingleOrDefault(u => u.Name == "rahien");
Assert.IsNotNull(user);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterAggregate()
{
User user = _query.Aggregate((u1, u2) => u1);
Assert.IsNotNull(user);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterAverage()
{
double average = _query.Average(u => u.InvalidLoginAttempts);
Assert.AreEqual(5.0, average);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterCount()
{
int totalCount = _query.Count();
Assert.AreEqual(3, totalCount);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterCountWithPredicate()
{
int count = _query.Count(u => u.LastLoginDate != null);
Assert.AreEqual(1, count);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterLongCount()
{
long totalCount = _query.LongCount();
Assert.AreEqual(3, totalCount);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterLongCountWithPredicate()
{
long totalCount = _query.LongCount(u => u.LastLoginDate != null);
Assert.AreEqual(1, totalCount);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterMax()
{
int max = _query.Max(u => u.InvalidLoginAttempts);
Assert.AreEqual(6, max);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterMin()
{
int min = _query.Min(u => u.InvalidLoginAttempts);
Assert.AreEqual(4, min);
AssertQueryReuseable();
}
[Test]
public void CanReuseAfterSum()
{
int sum = _query.Sum(u => u.InvalidLoginAttempts);
Assert.AreEqual(4 + 5 + 6, sum);
AssertQueryReuseable();
}
}
}