2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq / Test / Providers / ReadTests_Maths.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Text;\r
5 using Test_NUnit;\r
6 using NUnit.Framework;\r
7 using Test_NUnit.Linq_101_Samples;\r
8 \r
9 using nwind;\r
10 \r
11 // test ns \r
12 #if MYSQL\r
13     namespace Test_NUnit_MySql\r
14 #elif ORACLE && ODP\r
15     namespace Test_NUnit_OracleODP\r
16 #elif ORACLE\r
17     namespace Test_NUnit_Oracle\r
18 #elif POSTGRES\r
19     namespace Test_NUnit_PostgreSql\r
20 #elif SQLITE\r
21     namespace Test_NUnit_Sqlite\r
22 #elif INGRES\r
23     namespace Test_NUnit_Ingres\r
24 #elif MSSQL && L2SQL\r
25     namespace Test_NUnit_MsSql_Strict\r
26 #elif MSSQL\r
27     namespace Test_NUnit_MsSql\r
28 #elif FIREBIRD\r
29     namespace Test_NUnit_Firebird\r
30 #endif\r
31 {\r
32     [TestFixture]\r
33     public class ReadTests_Maths : TestBase\r
34     {\r
35 \r
36         [Test]\r
37         public void Abs01()\r
38         {\r
39             Northwind db = CreateDB();\r
40 \r
41             var q = from c in db.OrderDetails\r
42                     where Math.Abs((double)c.ProductID) > 0.0\r
43                     select c;\r
44 \r
45             var list = q.ToList();\r
46             Assert.IsTrue(list.Count > 0);\r
47         }\r
48 \r
49         [Test]\r
50         public void Abs02()\r
51         {\r
52             Northwind db = CreateDB();\r
53 \r
54             var q = from c in db.OrderDetails\r
55                     where Math.Abs((double)(c.Quantity)) > 0.0\r
56                     select c;\r
57 \r
58             var list = q.ToList();\r
59             Assert.IsTrue(list.Count > 0);\r
60         }\r
61 \r
62         //Devuelve el valor absoluto (positivo) de una expresión numérica.\r
63 \r
64         //EXP (SSIS)\r
65 \r
66 #if !DEBUG && (SQLITE && MONO)\r
67         [Explicit]\r
68 #endif\r
69         [Test]\r
70         public void Exp()\r
71         {\r
72             Northwind db = CreateDB();\r
73 \r
74             var q = from c in db.OrderDetails\r
75                     where Math.Exp((double)(c.Quantity)) > 0\r
76                     select c;\r
77 \r
78             var list = q.ToList();\r
79             Assert.IsTrue(list.Count > 0);\r
80         }\r
81 \r
82 \r
83         //Devuelve el exponente de la base e de la expresión especificada.\r
84 \r
85         //CEILING (SSIS)\r
86 \r
87 \r
88         //Devuelve el menor entero mayor o igual que una expresión numérica.\r
89 \r
90 #if !DEBUG && (SQLITE && MONO)\r
91         [Explicit]\r
92 #endif\r
93         [Test]\r
94         public void Floor()\r
95         {\r
96             Northwind db = CreateDB();\r
97 \r
98             var q = from c in db.OrderDetails\r
99                     where Math.Floor((double)(c.Discount)) > 0\r
100                     select c;\r
101 \r
102             var list = q.ToList();\r
103 \r
104         }\r
105 \r
106 \r
107         //Devuelve el mayor entero que es menor o igual que una expresión numérica.\r
108 \r
109         //LN (SSIS)\r
110 \r
111 #if !DEBUG && (SQLITE)\r
112         [Explicit]\r
113 #endif\r
114         [Test]\r
115         public void Log01()\r
116         {\r
117             Northwind db = CreateDB();\r
118 \r
119             var q = from c in db.OrderDetails\r
120                     where Math.Log((double)(c.Discount + 1)) > 0.0\r
121                     select c;\r
122 \r
123             Assert.AreEqual(838, q.Count());\r
124         }\r
125 \r
126 #if !DEBUG && (SQLITE)\r
127         [Explicit]\r
128 #endif\r
129         [Test]\r
130         public void Log02()\r
131         {\r
132             Northwind db = CreateDB();\r
133 \r
134             var q = from c in db.OrderDetails\r
135                     where Math.Log((double)(c.Discount + 1),3.0) > 0.0\r
136                     select c;\r
137 \r
138             Assert.AreEqual(838, q.Count());\r
139         }\r
140 \r
141 \r
142         //Devuelve el logaritmo natural de una expresión numérica.\r
143 \r
144         //LOG (SSIS)\r
145 #if !DEBUG && (SQLITE && MONO)\r
146         [Explicit]\r
147 #endif\r
148         [Test]\r
149         public void Log03()\r
150         {\r
151             Northwind db = CreateDB();\r
152 \r
153             var q = from c in db.OrderDetails\r
154                     where Math.Log10((double)(c.Discount + 1)) > 0.0\r
155                     select c;\r
156 \r
157             Assert.AreEqual(838, q.Count());\r
158         }\r
159 \r
160 \r
161         //Devuelve el logaritmo en base 10 de una expresión numérica.\r
162 \r
163         //POWER (SSIS)\r
164 \r
165 #if !DEBUG && SQLITE\r
166         [Explicit]\r
167 #endif\r
168         [Test]\r
169         public void Pow()\r
170         {\r
171             Northwind db = CreateDB();\r
172 \r
173             var q = from c in db.OrderDetails\r
174                     where Math.Pow((double)(c.Discount), 2.0) > 0\r
175                     select c;\r
176 \r
177             var list = q.ToList();\r
178 \r
179         }\r
180         //Devuelve el resultado de elevar una expresión numérica a una determinada potencia.\r
181 \r
182         //ROUND (SSIS)\r
183 #if !DEBUG && (MSSQL && !L2SQL)\r
184         [Explicit]\r
185 #endif\r
186         [Test]\r
187         public void Round()\r
188         {\r
189             Northwind db = CreateDB();\r
190 \r
191             var q = from c in db.OrderDetails\r
192                     where Math.Round((double)(c.Discount), MidpointRounding.AwayFromZero) > 0\r
193                     select c;\r
194 \r
195             var list = q.ToList();\r
196 \r
197         }\r
198 \r
199 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))\r
200         [Explicit]\r
201 #endif\r
202         [Test]\r
203         [ExpectedException(typeof(NotSupportedException))]\r
204         public void Round02()\r
205         {\r
206             Northwind db = CreateDB();\r
207 \r
208             var q = from c in db.OrderDetails\r
209                     where Math.Round((double)(c.Discount)) > 0\r
210                     select c;\r
211 \r
212             var list = q.ToList();\r
213 \r
214         }\r
215 \r
216         //Devuelve una expresión numérica, redondeada a la longitud o precisión especificada. .\r
217 \r
218         //SIGN (SSIS)\r
219 \r
220 \r
221 #if !DEBUG && (SQLITE && MONO)\r
222         [Explicit]\r
223 #endif\r
224         [Test]\r
225         public void Sign01()\r
226         {\r
227             Northwind db = CreateDB();\r
228 \r
229             var q = from c in db.OrderDetails\r
230                     where Math.Sign((double)(c.Discount)) > 0d\r
231                     select c;\r
232 \r
233             var list = q.ToList();\r
234         }\r
235         //Devuelve el signo positivo (+), cero (0) o negativo (-) de una expresión numérica.\r
236 \r
237         //SQUARE (SSIS)\r
238 \r
239 \r
240         //Devuelve el cuadrado de una expresión numérica.\r
241 \r
242         //SQRT (SSIS) \r
243 \r
244 #if !DEBUG && (SQLITE && MONO)\r
245         [Explicit]\r
246 #endif\r
247         [Test]\r
248         public void Sqrt()\r
249         {\r
250             Northwind db = CreateDB();\r
251             //Employee e;\r
252             //Order o;\r
253             var q = from c in db.OrderDetails\r
254                     where Math.Sqrt((double)(c.Discount)) > 0\r
255                     select c;\r
256 \r
257             var list = q.ToList();\r
258         }\r
259     }\r
260 \r
261 }\r