0
|
1 using System;
|
|
2 using System.Linq;
|
|
3 using BLToolkit.Data.Linq;
|
|
4 using NUnit.Framework;
|
|
5
|
|
6 using BLToolkit.Data.DataProvider;
|
|
7
|
|
8 namespace Data.Linq
|
|
9 {
|
|
10 [TestFixture]
|
|
11 public class MathFunctions : TestBase
|
|
12 {
|
|
13 [Test]
|
|
14 public void Abs()
|
|
15 {
|
|
16 ForEachProvider(db => AreEqual(
|
|
17 from t in from p in Types select Math.Abs(p.MoneyValue) where t > 0 select t,
|
|
18 from t in from p in db.Types select Math.Abs(p.MoneyValue) where t > 0 select t));
|
|
19 }
|
|
20
|
|
21 [Test]
|
|
22 public void Acos()
|
|
23 {
|
|
24 ForEachProvider(new[] { ProviderName.Access }, db => AreEqual(
|
|
25 from t in from p in Types select Math.Floor(Math.Acos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
26 from t in from p in db.Types select Math.Floor(Math.Acos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
27 }
|
|
28
|
|
29 [Test]
|
|
30 public void Asin()
|
|
31 {
|
|
32 ForEachProvider(new[] { ProviderName.Access }, db => AreEqual(
|
|
33 from t in from p in Types select Math.Floor(Math.Asin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
34 from t in from p in db.Types select Math.Floor(Math.Asin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
35 }
|
|
36
|
|
37 [Test]
|
|
38 public void Atan()
|
|
39 {
|
|
40 ForEachProvider(db => AreEqual(
|
|
41 from t in from p in Types select Math.Floor(Math.Atan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
42 from t in from p in db.Types select Math.Floor(Math.Atan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
43 }
|
|
44
|
|
45 [Test]
|
|
46 public void Atan2()
|
|
47 {
|
|
48 ForEachProvider(new[] { ProviderName.Access }, db => AreEqual(
|
|
49 from t in from p in Types select Math.Floor(Math.Atan2((double)p.MoneyValue / 15, 0) * 15) where t != 0.1 select t,
|
|
50 from t in from p in db.Types select Math.Floor(Math.Atan2((double)p.MoneyValue / 15, 0) * 15) where t != 0.1 select t));
|
|
51 }
|
|
52
|
|
53 [Test]
|
|
54 public void Ceiling1()
|
|
55 {
|
|
56 ForEachProvider(db => AreEqual(
|
|
57 from t in from p in Types select Math.Ceiling(-(p.MoneyValue + 1)) where t != 0 select t,
|
|
58 from t in from p in db.Types select Math.Ceiling(-(p.MoneyValue + 1)) where t != 0 select t));
|
|
59 }
|
|
60
|
|
61 [Test]
|
|
62 public void Ceiling2()
|
|
63 {
|
|
64 ForEachProvider(db => AreEqual(
|
|
65 from t in from p in Types select Math.Ceiling(p.MoneyValue) where t != 0 select t,
|
|
66 from t in from p in db.Types select Math.Ceiling(p.MoneyValue) where t != 0 select t));
|
|
67 }
|
|
68
|
|
69 [Test]
|
|
70 public void Cos()
|
|
71 {
|
|
72 ForEachProvider(db => AreEqual(
|
|
73 from t in from p in Types select Math.Floor(Math.Cos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
74 from t in from p in db.Types select Math.Floor(Math.Cos((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
75 }
|
|
76
|
|
77 [Test]
|
|
78 public void Cosh()
|
|
79 {
|
|
80 ForEachProvider(db => AreEqual(
|
|
81 from t in from p in Types select Math.Floor(Math.Cosh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
82 from t in from p in db.Types select Math.Floor(Math.Cosh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
83 }
|
|
84
|
|
85 [Test]
|
|
86 public void Cot()
|
|
87 {
|
|
88 ForEachProvider(db => AreEqual(
|
|
89 from t in from p in Types select Math.Floor(Sql.Cot((double)p.MoneyValue / 15).Value * 15) where t != 0.1 select t,
|
|
90 from t in from p in db.Types select Math.Floor(Sql.Cot((double)p.MoneyValue / 15).Value * 15) where t != 0.1 select t));
|
|
91 }
|
|
92
|
|
93 [Test]
|
|
94 public void Deegrees1()
|
|
95 {
|
|
96 ForEachProvider(db => AreEqual(
|
|
97 from t in from p in Types select Math.Floor(Sql.Degrees(p.MoneyValue).Value) where t != 0.1m select t,
|
|
98 from t in from p in db.Types select Math.Floor(Sql.Degrees(p.MoneyValue).Value) where t != 0.1m select t));
|
|
99 }
|
|
100
|
|
101 [Test]
|
|
102 public void Deegrees2()
|
|
103 {
|
|
104 ForEachProvider(db => AreEqual(
|
|
105 from t in from p in Types select Sql.Degrees((double)p.MoneyValue).Value where t != 0.1 select Math.Floor(t),
|
|
106 from t in from p in db.Types select Sql.Degrees((double)p.MoneyValue).Value where t != 0.1 select Math.Floor(t)));
|
|
107 }
|
|
108
|
|
109 [Test]
|
|
110 public void Deegrees3()
|
|
111 {
|
|
112 ForEachProvider(db => AreEqual(
|
|
113 from t in from p in Types select Sql.Degrees((int)p.MoneyValue).Value where t != 0.1 select t,
|
|
114 from t in from p in db.Types select Sql.Degrees((int)p.MoneyValue).Value where t != 0.1 select t));
|
|
115 }
|
|
116
|
|
117 [Test]
|
|
118 public void Exp()
|
|
119 {
|
|
120 ForEachProvider(db => AreEqual(
|
|
121 from t in from p in Types select Math.Floor(Math.Exp((double)p.MoneyValue)) where t != 0.1 select t,
|
|
122 from t in from p in db.Types select Math.Floor(Math.Exp((double)p.MoneyValue)) where t != 0.1 select t));
|
|
123 }
|
|
124
|
|
125 [Test]
|
|
126 public void Floor()
|
|
127 {
|
|
128 ForEachProvider(db => AreEqual(
|
|
129 from t in from p in Types select Math.Floor(-(p.MoneyValue + 1)) where t != 0 select t,
|
|
130 from t in from p in db.Types select Math.Floor(-(p.MoneyValue + 1)) where t != 0 select t));
|
|
131 }
|
|
132
|
|
133 [Test]
|
|
134 public void Log()
|
|
135 {
|
|
136 ForEachProvider(db => AreEqual(
|
|
137 from t in from p in Types select Math.Floor(Math.Log((double)p.MoneyValue)) where t != 0.1 select t,
|
|
138 from t in from p in db.Types select Math.Floor(Math.Log((double)p.MoneyValue)) where t != 0.1 select t));
|
|
139 }
|
|
140
|
|
141 [Test]
|
|
142 public void Log2()
|
|
143 {
|
|
144 ForEachProvider(db => AreEqual(
|
|
145 from t in from p in Types select Math.Floor(Math.Log((double)p.MoneyValue, 2)) where t != 0.1 select t,
|
|
146 from t in from p in db.Types select Math.Floor(Math.Log((double)p.MoneyValue, 2)) where t != 0.1 select t));
|
|
147 }
|
|
148
|
|
149 [Test]
|
|
150 public void Log10()
|
|
151 {
|
|
152 ForEachProvider(db => AreEqual(
|
|
153 from t in from p in Types select Math.Floor(Math.Log10((double)p.MoneyValue)) where t != 0.1 select t,
|
|
154 from t in from p in db.Types select Math.Floor(Math.Log10((double)p.MoneyValue)) where t != 0.1 select t));
|
|
155 }
|
|
156
|
|
157 [Test]
|
|
158 public void Max()
|
|
159 {
|
|
160 ForEachProvider(db => AreEqual(
|
|
161 from t in from p in Types select Math.Max(p.MoneyValue, 5) where t != 0 select t,
|
|
162 from t in from p in db.Types select Math.Max(p.MoneyValue, 5) where t != 0 select t));
|
|
163 }
|
|
164
|
|
165 [Test]
|
|
166 public void Min()
|
|
167 {
|
|
168 ForEachProvider(db => AreEqual(
|
|
169 from t in from p in Types select Math.Min(p.MoneyValue, 5) where t != 0 select t,
|
|
170 from t in from p in db.Types select Math.Min(p.MoneyValue, 5) where t != 0 select t));
|
|
171 }
|
|
172
|
|
173 [Test]
|
|
174 public void Pow()
|
|
175 {
|
|
176 ForEachProvider(db => AreEqual(
|
|
177 from t in from p in Types select Math.Floor(Math.Pow((double)p.MoneyValue, 3)) where t != 0 select t,
|
|
178 from t in from p in db.Types select Math.Floor(Math.Pow((double)p.MoneyValue, 3)) where t != 0 select t));
|
|
179 }
|
|
180
|
|
181 [Test]
|
|
182 public void Round1()
|
|
183 {
|
|
184 ForEachProvider(db => AreEqual(
|
|
185 from t in from p in Types select Math.Round(p.MoneyValue) where t != 0 select t,
|
|
186 from t in from p in db.Types select Math.Round(p.MoneyValue) where t != 0 select t));
|
|
187 }
|
|
188
|
|
189 [Test]
|
|
190 public void Round2()
|
|
191 {
|
|
192 ForEachProvider(db => AreEqual(
|
|
193 from t in from p in Types select Math.Round((double)p.MoneyValue) where t != 0 select t,
|
|
194 from t in from p in db.Types select Math.Round((double)p.MoneyValue) where t != 0 select t));
|
|
195 }
|
|
196
|
|
197 [Test]
|
|
198 public void Round3()
|
|
199 {
|
|
200 ForEachProvider(db => AreEqual(
|
|
201 from t in from p in Types select Math.Round(p.MoneyValue, 1) where t != 0 && t != 7 select t,
|
|
202 from t in from p in db.Types select Math.Round(p.MoneyValue, 1) where t != 0 && t != 7 select t));
|
|
203 }
|
|
204
|
|
205 [Test]
|
|
206 public void Round4()
|
|
207 {
|
|
208 ForEachProvider(db => AreEqual(
|
|
209 from t in from p in Types select Math.Round((double)p.MoneyValue, 1) where t != 0 select Math.Round(t, 5),
|
|
210 from t in from p in db.Types select Math.Round((double)p.MoneyValue, 1) where t != 0 select Math.Round(t, 5)));
|
|
211 }
|
|
212
|
|
213 [Test]
|
|
214 public void Round5()
|
|
215 {
|
|
216 ForEachProvider(db => AreEqual(
|
|
217 from t in from p in Types select Math.Round(p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t,
|
|
218 from t in from p in db.Types select Math.Round(p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t));
|
|
219 }
|
|
220
|
|
221 [Test]
|
|
222 public void Round6()
|
|
223 {
|
|
224 ForEachProvider(db => AreEqual(
|
|
225 from t in from p in Types select Math.Round((double)p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t,
|
|
226 from t in from p in db.Types select Math.Round((double)p.MoneyValue, MidpointRounding.AwayFromZero) where t != 0 select t));
|
|
227 }
|
|
228
|
|
229 [Test]
|
|
230 public void Round7()
|
|
231 {
|
|
232 ForEachProvider(db => AreEqual(
|
|
233 from t in from p in Types select Math.Round(p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t,
|
|
234 from t in from p in db.Types select Math.Round(p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t));
|
|
235 }
|
|
236
|
|
237 [Test]
|
|
238 public void Round8()
|
|
239 {
|
|
240 ForEachProvider(db => AreEqual(
|
|
241 from t in from p in Types select Math.Round((double)p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t,
|
|
242 from t in from p in db.Types select Math.Round((double)p.MoneyValue, MidpointRounding.ToEven) where t != 0 select t));
|
|
243 }
|
|
244
|
|
245 [Test]
|
|
246 public void Round9()
|
|
247 {
|
|
248 ForEachProvider(new[] { ProviderName.SQLite }, db => AreEqual(
|
|
249 from t in from p in Types select Math.Round(p.MoneyValue, 1, MidpointRounding.AwayFromZero) where t != 0 select t,
|
|
250 from t in from p in db.Types select Math.Round(p.MoneyValue, 1, MidpointRounding.AwayFromZero) where t != 0 select t));
|
|
251 }
|
|
252
|
|
253 [Test]
|
|
254 public void Round10()
|
|
255 {
|
|
256 ForEachProvider(db => AreEqual(
|
|
257 from t in from p in Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 && t != 7 select t,
|
|
258 from t in from p in db.Types select Math.Round(p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 && t != 7 select t));
|
|
259 }
|
|
260
|
|
261 [Test]
|
|
262 public void Round11()
|
|
263 {
|
|
264 ForEachProvider(db => AreEqual(
|
|
265 from t in from p in Types select Math.Round((double)p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 select Math.Round(t, 5),
|
|
266 from t in from p in db.Types select Math.Round((double)p.MoneyValue, 1, MidpointRounding.ToEven) where t != 0 select Math.Round(t, 5)));
|
|
267 }
|
|
268
|
|
269 [Test]
|
|
270 public void Round12()
|
|
271 {
|
|
272 var mp = MidpointRounding.AwayFromZero;
|
|
273
|
|
274 ForEachProvider(new[] { ProviderName.SQLite }, db => AreEqual(
|
|
275 from t in from p in Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 && t != 7 select t,
|
|
276 from t in from p in db.Types select Math.Round(p.MoneyValue, 1, mp) where t != 0 && t != 7 select t));
|
|
277 }
|
|
278
|
|
279 [Test]
|
|
280 public void Sign()
|
|
281 {
|
|
282 ForEachProvider(db => AreEqual(
|
|
283 from t in from p in Types select Math.Sign(p.MoneyValue) where t != 0 select t,
|
|
284 from t in from p in db.Types select Math.Sign(p.MoneyValue) where t != 0 select t));
|
|
285 }
|
|
286
|
|
287 [Test]
|
|
288 public void Sin()
|
|
289 {
|
|
290 ForEachProvider(db => AreEqual(
|
|
291 from t in from p in Types select Math.Floor(Math.Sin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
292 from t in from p in db.Types select Math.Floor(Math.Sin((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
293 }
|
|
294
|
|
295 [Test]
|
|
296 public void Sinh()
|
|
297 {
|
|
298 ForEachProvider(db => AreEqual(
|
|
299 from t in from p in Types select Math.Floor(Math.Sinh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
300 from t in from p in db.Types select Math.Floor(Math.Sinh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
301 }
|
|
302
|
|
303 [Test]
|
|
304 public void Sqrt()
|
|
305 {
|
|
306 ForEachProvider(db => AreEqual(
|
|
307 from t in from p in Types select Math.Floor(Math.Sqrt((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
308 from t in from p in db.Types select Math.Floor(Math.Sqrt((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
309 }
|
|
310
|
|
311 [Test]
|
|
312 public void Tan()
|
|
313 {
|
|
314 ForEachProvider(db => AreEqual(
|
|
315 from t in from p in Types select Math.Floor(Math.Tan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
316 from t in from p in db.Types select Math.Floor(Math.Tan((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
317 }
|
|
318
|
|
319 [Test]
|
|
320 public void Tanh()
|
|
321 {
|
|
322 ForEachProvider(db => AreEqual(
|
|
323 from t in from p in Types select Math.Floor(Math.Tanh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t,
|
|
324 from t in from p in db.Types select Math.Floor(Math.Tanh((double)p.MoneyValue / 15) * 15) where t != 0.1 select t));
|
|
325 }
|
|
326
|
|
327 [Test]
|
|
328 public void Truncate1()
|
|
329 {
|
|
330 ForEachProvider(db => AreEqual(
|
|
331 from t in from p in Types select Math.Truncate(p.MoneyValue) where t != 0.1m select t,
|
|
332 from t in from p in db.Types select Math.Truncate(p.MoneyValue) where t != 0.1m select t));
|
|
333 }
|
|
334
|
|
335 [Test]
|
|
336 public void Truncate2()
|
|
337 {
|
|
338 ForEachProvider(db => AreEqual(
|
|
339 from t in from p in Types select Math.Truncate((double)-p.MoneyValue) where t != 0.1 select t,
|
|
340 from t in from p in db.Types select Math.Truncate((double)-p.MoneyValue) where t != 0.1 select t));
|
|
341 }
|
|
342 }
|
|
343 }
|