annotate UnitTests/Linq/TakeSkipTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 namespace Data.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using Model;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class TakeSkipTest : TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 public void Take1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 for (var i = 2; i <= 3; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 Assert.AreEqual(i, (from ch in db.Child select ch).Take(i).ToList().Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 static void TakeParam(ITestDataContext db, int n)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 Assert.AreEqual(n, (from ch in db.Child select ch).Take(n).ToList().Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 public void Take2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 ForEachProvider(db => TakeParam(db, 1));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public void Take3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 Assert.AreEqual(3, (from ch in db.Child where ch.ChildID > 3 || ch.ChildID < 4 select ch).Take(3).ToList().Count));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public void Take4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 Assert.AreEqual(3, (from ch in db.Child where ch.ChildID >= 0 && ch.ChildID <= 100 select ch).Take(3).ToList().Count));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public void Take5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 ForEachProvider(db => Assert.AreEqual(3, db.Child.Take(3).ToList().Count));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 public void Take6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 var expected = Child.OrderBy(c => c.ChildID).Take(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 var result = db.Child.OrderBy(c => c.ChildID).Take(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 Assert.IsTrue(result.ToList().SequenceEqual(expected));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 public void Take7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 ForEachProvider(db => Assert.AreEqual(3, db.Child.Take(() => 3).ToList().Count));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public void Take8()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 var n = 3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 ForEachProvider(db => Assert.AreEqual(3, db.Child.Take(() => n).ToList().Count));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public void TakeCount()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 ForEachProvider(new[] { ProviderName.Sybase }, db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 Child.Take(5).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 db.Child.Take(5).Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 public void Skip1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 ForEachProvider(db => AreEqual(Child.Skip(3), db.Child.Skip(3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 public void Skip2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 var expected = (from ch in Child where ch.ChildID > 3 || ch.ChildID < 4 select ch).Skip(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 ForEachProvider(db => AreEqual(expected, (from ch in db.Child where ch.ChildID > 3 || ch.ChildID < 4 select ch).Skip(3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 public void Skip3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 var expected = (from ch in Child where ch.ChildID >= 0 && ch.ChildID <= 100 select ch).Skip(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 ForEachProvider(db => AreEqual(expected, (from ch in db.Child where ch.ChildID >= 0 && ch.ChildID <= 100 select ch).Skip(3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public void Skip4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 var expected = Child.OrderByDescending(c => c.ChildID).Skip(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 var result = db.Child.OrderByDescending(c => c.ChildID).Skip(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 Assert.IsTrue(result.ToList().SequenceEqual(expected));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 public void Skip5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 var expected = Child.OrderByDescending(c => c.ChildID).ThenBy(c => c.ParentID + 1).Skip(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 ForEachProvider(db => AreEqual(expected, db.Child.OrderByDescending(c => c.ChildID).ThenBy(c => c.ParentID + 1).Skip(3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public void Skip6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 ForEachProvider(db => AreEqual(Child.Skip(3), db.Child.Skip(() => 3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 public void Skip7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 var n = 3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 ForEachProvider(db => AreEqual(Child.Skip(n), db.Child.Skip(() => n)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 public void SkipCount()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 ForEachProvider(new[] { "Sql2000", ProviderName.Sybase, ProviderName.SQLite, ProviderName.Access }, db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 Child.Skip(2).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 db.Child.Skip(2).Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 public void SkipTake1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 var expected = Child.OrderByDescending(c => c.ChildID).Skip(2).Take(5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 var result = db.Child.OrderByDescending(c => c.ChildID).Skip(2).Take(5);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 Assert.IsTrue(result.ToList().SequenceEqual(expected));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 public void SkipTake2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 var expected = Child.OrderByDescending(c => c.ChildID).Take(7).Skip(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 var result = db.Child.OrderByDescending(c => c.ChildID).Take(7).Skip(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 Assert.IsTrue(result.ToList().SequenceEqual(expected));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 public void SkipTake3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 var expected = Child.OrderBy(c => c.ChildID).Skip(1).Take(7).Skip(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 var result = db.Child.OrderBy(c => c.ChildID).Skip(1).Take(7).Skip(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 Assert.IsTrue(result.ToList().SequenceEqual(expected));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 public void SkipTake4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 var expected = Child.OrderByDescending(c => c.ChildID).Skip(1).Take(7).OrderBy(c => c.ChildID).Skip(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 ForEachProvider(new[] { "Sql2000", ProviderName.SQLite, ProviderName.Sybase, ProviderName.Access }, db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 var result = db.Child.OrderByDescending(c => c.ChildID).Skip(1).Take(7).OrderBy(c => c.ChildID).Skip(2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 Assert.IsTrue(result.ToList().SequenceEqual(expected));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 public void SkipTake5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 var list = db.Child.Skip(2).Take(5).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 Assert.AreEqual(5, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 void SkipTake6(ITestDataContext db, bool doSkip)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 var q1 = from g in db.GrandChild select g;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 if (doSkip)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 q1 = q1.Skip(12);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 q1 = q1.Take(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 var q2 =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 from c in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 from p in q1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 where c.ParentID == p.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 select c;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 var q3 = from g in GrandChild select g;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 if (doSkip)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 q3 = q3.Skip(12);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 q3 = q3.Take(3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 var q4 =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 from c in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 from p in q3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 where c.ParentID == p.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 select c;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 AreEqual(q4, q2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 public void SkipTake6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 ForEachProvider(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 new[] { "Sql2000", ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Access, ProviderName.Sybase },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 SkipTake6(db, false);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 SkipTake6(db, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 public void SkipTakeCount()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 ForEachProvider(new[] { "Sql2000", ProviderName.SqlCe, ProviderName.Sybase, ProviderName.SQLite, ProviderName.Access }, db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 Child.Skip(2).Take(5).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 db.Child.Skip(2).Take(5).Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 public void SkipFirst()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 var expected = (from p in Parent where p.ParentID > 1 select p).Skip(1).First();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 var result = from p in db.GetTable<Parent>() select p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 result = from p in result where p.ParentID > 1 select p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 var b = result.Skip(1).First();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 Assert.AreEqual(expected, b);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 public void ElementAt1([DataContexts] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 using (var db = GetDataContext(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 (from p in Parent where p.ParentID > 1 select p).ElementAt(3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 (from p in db.Parent where p.ParentID > 1 select p).ElementAt(3));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 public void ElementAt2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 var n = 3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 (from p in Parent where p.ParentID > 1 select p).ElementAt(n),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 (from p in db.Parent where p.ParentID > 1 select p).ElementAt(() => n)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 public void ElementAtDefault1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 (from p in Parent where p.ParentID > 1 select p).ElementAtOrDefault(3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 (from p in db.Parent where p.ParentID > 1 select p).ElementAtOrDefault(3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 public void ElementAtDefault2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 ForEachProvider(db => Assert.IsNull((from p in db.Parent where p.ParentID > 1 select p).ElementAtOrDefault(300000)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 public void ElementAtDefault3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 var n = 3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 (from p in Parent where p.ParentID > 1 select p).ElementAtOrDefault(n),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 (from p in db.Parent where p.ParentID > 1 select p).ElementAtOrDefault(() => n)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 public void ElementAtDefault4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 var n = 300000;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 ForEachProvider(db => Assert.IsNull((from p in db.Parent where p.ParentID > 1 select p).ElementAtOrDefault(() => n)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 public void ElementAtDefault5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 Person.ElementAtOrDefault(3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 db.Person.ElementAtOrDefault(3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 }