Mercurial > pub > bltoolkit
comparison UnitTests/Linq/ElementOperationTest.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 using System.Linq; | |
2 | |
3 using BLToolkit.Data.DataProvider; | |
4 using BLToolkit.Data.Linq; | |
5 using NUnit.Framework; | |
6 | |
7 namespace Data.Linq | |
8 { | |
9 using Model; | |
10 | |
11 [TestFixture] | |
12 public class ElementOperationTest : TestBase | |
13 { | |
14 [Test] | |
15 public void First() | |
16 { | |
17 ForEachProvider(db => Assert.AreEqual( | |
18 Parent.OrderByDescending(p => p.ParentID).First().ParentID, | |
19 db.Parent.OrderByDescending(p => p.ParentID).First().ParentID)); | |
20 } | |
21 | |
22 [Test] | |
23 public void FirstWhere() | |
24 { | |
25 ForEachProvider(db => Assert.AreEqual(2, db.Parent.First(p => p.ParentID == 2).ParentID)); | |
26 } | |
27 | |
28 [Test] | |
29 public void FirstOrDefault() | |
30 { | |
31 ForEachProvider(db => Assert.IsNull((from p in db.Parent where p.ParentID == 100 select p).FirstOrDefault())); | |
32 } | |
33 | |
34 [Test] | |
35 public void FirstOrDefaultWhere() | |
36 { | |
37 ForEachProvider(db => Assert.AreEqual(2, db.Parent.FirstOrDefault(p => p.ParentID == 2).ParentID)); | |
38 } | |
39 | |
40 [Test] | |
41 public void Single() | |
42 { | |
43 ForEachProvider(db => Assert.AreEqual(1, db.Parent.Where(p => p.ParentID == 1).Single().ParentID)); | |
44 } | |
45 | |
46 [Test] | |
47 public void SingleWhere() | |
48 { | |
49 ForEachProvider(db => Assert.AreEqual(2, db.Parent.Single(p => p.ParentID == 2).ParentID)); | |
50 } | |
51 | |
52 [Test] | |
53 public void SingleOrDefault() | |
54 { | |
55 ForEachProvider(db => Assert.IsNull((from p in db.Parent where p.ParentID == 100 select p).SingleOrDefault())); | |
56 } | |
57 | |
58 [Test] | |
59 public void SingleOrDefaultWhere() | |
60 { | |
61 ForEachProvider(db => Assert.AreEqual(2, db.Parent.SingleOrDefault(p => p.ParentID == 2).ParentID)); | |
62 } | |
63 | |
64 [Test] | |
65 public void FirstOrDefaultScalar() | |
66 { | |
67 ForEachProvider(db => Assert.AreEqual( | |
68 Parent.OrderBy(p => p.ParentID).FirstOrDefault().ParentID, | |
69 db.Parent.OrderBy(p => p.ParentID).FirstOrDefault().ParentID)); | |
70 } | |
71 | |
72 [Test] | |
73 public void NestedFirstOrDefaultScalar1() | |
74 { | |
75 ForEachProvider(new[] { ProviderName.Informix, ProviderName.Sybase }, db => AreEqual( | |
76 from p in Parent select Child.FirstOrDefault().ChildID, | |
77 from p in db.Parent select db.Child.FirstOrDefault().ChildID)); | |
78 } | |
79 | |
80 [Test] | |
81 public void NestedFirstOrDefaultScalar2() | |
82 { | |
83 ForEachProvider( | |
84 new[] { ProviderName.Informix, "Oracle", "DevartOracle", ProviderName.Sybase }, db => | |
85 AreEqual( | |
86 from p in Parent | |
87 select new | |
88 { | |
89 p.ParentID, | |
90 MaxChild = | |
91 Child | |
92 .Where(c => c.Parent == p) | |
93 .OrderByDescending(c => c.ChildID * c.ParentID) | |
94 .FirstOrDefault() == null ? | |
95 0 : | |
96 Child | |
97 .Where(c => c.Parent == p) | |
98 .OrderByDescending(c => c.ChildID * c.ParentID) | |
99 .FirstOrDefault() | |
100 .ChildID | |
101 }, | |
102 from p in db.Parent | |
103 select new | |
104 { | |
105 p.ParentID, | |
106 MaxChild = db.Child | |
107 .Where(c => c.Parent == p) | |
108 .OrderByDescending(c => c.ChildID * c.ParentID) | |
109 .FirstOrDefault() | |
110 .ChildID | |
111 })); | |
112 } | |
113 | |
114 [Test] | |
115 public void NestedFirstOrDefault1() | |
116 { | |
117 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = true; | |
118 | |
119 ForEachProvider( | |
120 db => AreEqual( | |
121 from p in Parent select Child.FirstOrDefault(), | |
122 from p in db.Parent select db.Child.FirstOrDefault())); | |
123 | |
124 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = false; | |
125 } | |
126 | |
127 [Test] | |
128 public void NestedFirstOrDefault2() | |
129 { | |
130 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = true; | |
131 | |
132 ForEachProvider( | |
133 db => AreEqual( | |
134 from p in Parent select p.Children.FirstOrDefault(), | |
135 from p in db.Parent select p.Children.FirstOrDefault())); | |
136 | |
137 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = false; | |
138 } | |
139 | |
140 [Test] | |
141 public void NestedFirstOrDefault3() | |
142 { | |
143 ForEachProvider( | |
144 // Can be fixed. | |
145 new[] { ProviderName.Informix, ProviderName.Firebird }, | |
146 db => AreEqual( | |
147 from p in Parent select p.Children.Select(c => c.ParentID).Distinct().FirstOrDefault(), | |
148 from p in db.Parent select p.Children.Select(c => c.ParentID).Distinct().FirstOrDefault())); | |
149 } | |
150 | |
151 [Test] | |
152 public void NestedFirstOrDefault4() | |
153 { | |
154 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = true; | |
155 | |
156 ForEachProvider( | |
157 // Can be fixed. | |
158 new[] { ProviderName.Informix, ProviderName.Firebird, ProviderName.PostgreSQL }, | |
159 db => AreEqual( | |
160 from p in Parent select p.Children.Where(c => c.ParentID > 0).Distinct().FirstOrDefault(), | |
161 from p in db.Parent select p.Children.Where(c => c.ParentID > 0).Distinct().FirstOrDefault())); | |
162 | |
163 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = false; | |
164 } | |
165 | |
166 [Test] | |
167 public void NestedFirstOrDefault5() | |
168 { | |
169 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = true; | |
170 | |
171 ForEachProvider( | |
172 db => AreEqual( | |
173 from p in GrandChild select p.Child.Parent.Children.FirstOrDefault(), | |
174 from p in db.GrandChild select p.Child.Parent.Children.FirstOrDefault())); | |
175 | |
176 BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = false; | |
177 } | |
178 | |
179 [Test] | |
180 public void NestedSingleOrDefault1() | |
181 { | |
182 ForEachProvider( | |
183 db => AreEqual( | |
184 from p in Parent select p.Children.Select(c => c.ParentID).Distinct().SingleOrDefault(), | |
185 from p in db.Parent select p.Children.Select(c => c.ParentID).Distinct().SingleOrDefault())); | |
186 } | |
187 | |
188 [Test] | |
189 public void FirstOrDefaultEntitySet([IncludeDataContexts("Northwind")] string context) | |
190 { | |
191 using (var db = new NorthwindDB()) | |
192 { | |
193 AreEqual( | |
194 Customer.Select(c => c.Orders.FirstOrDefault()), | |
195 db.Customer.Select(c => c.Orders.FirstOrDefault())); | |
196 } | |
197 } | |
198 | |
199 [Test] | |
200 public void NestedSingleOrDefaultTest([IncludeDataContexts("Northwind")] string context) | |
201 { | |
202 using (var db = new NorthwindDB()) | |
203 { | |
204 AreEqual( | |
205 Customer.Select(c => c.Orders.Take(1).SingleOrDefault()), | |
206 db.Customer.Select(c => c.Orders.Take(1).SingleOrDefault())); | |
207 } | |
208 } | |
209 | |
210 [Test] | |
211 public void MultipleQuery([IncludeDataContexts("Northwind")] string context) | |
212 { | |
213 using (var db = new NorthwindDB()) | |
214 { | |
215 var q = | |
216 from p in db.Product | |
217 select db.Category.Select(zrp => zrp.CategoryName).FirstOrDefault(); | |
218 | |
219 q.ToList(); | |
220 } | |
221 } | |
222 } | |
223 } |