2 // SqlDateTimeTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlDateTime
\r
5 // Ville Palo (vi64pa@koti.soon.fi)
\r
6 // Martin Willemoes Hansen
\r
8 // (C) 2002 Ville Palo
\r
9 // (C) 2003 Martin Willemoes Hansen
\r
13 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
\r
15 // Permission is hereby granted, free of charge, to any person obtaining
\r
16 // a copy of this software and associated documentation files (the
\r
17 // "Software"), to deal in the Software without restriction, including
\r
18 // without limitation the rights to use, copy, modify, merge, publish,
\r
19 // distribute, sublicense, and/or sell copies of the Software, and to
\r
20 // permit persons to whom the Software is furnished to do so, subject to
\r
21 // the following conditions:
\r
23 // The above copyright notice and this permission notice shall be
\r
24 // included in all copies or substantial portions of the Software.
\r
26 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
27 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
28 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
29 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
30 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
31 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
32 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
35 using NUnit.Framework;
\r
38 using System.Data.SqlTypes;
\r
39 using System.Threading;
\r
40 using System.Globalization;
\r
42 namespace MonoTests.System.Data.SqlTypes
\r
45 public class SqlDateTimeTest {
\r
47 private long[] myTicks = {
\r
48 631501920000000000L, // 25 Feb 2002 - 00:00:00
\r
49 631502475130080000L, // 25 Feb 2002 - 15:25:13,8
\r
50 631502115130080000L, // 25 Feb 2002 - 05:25:13,8
\r
51 631502115000000000L, // 25 Feb 2002 - 05:25:00
\r
52 631502115130000000L, // 25 Feb 2002 - 05:25:13
\r
53 631502079130000000L, // 25 Feb 2002 - 04:25:13
\r
54 629197085770000000L // 06 Nov 1994 - 08:49:37
\r
57 private SqlDateTime Test1;
\r
58 private SqlDateTime Test2;
\r
59 private SqlDateTime Test3;
\r
62 public void GetReady()
\r
64 Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
\r
65 Test1 = new SqlDateTime (2002, 10, 19, 9, 40, 0);
\r
66 Test2 = new SqlDateTime (2003, 11, 20,10, 50, 1);
\r
67 Test3 = new SqlDateTime (2003, 11, 20, 10, 50, 1);
\r
72 public void Create()
\r
74 // SqlDateTime (DateTime)
\r
75 SqlDateTime CTest = new SqlDateTime (
\r
76 new DateTime (2002, 5, 19, 3, 34, 0));
\r
77 Assert.AreEqual (2002, CTest.Value.Year, "#A01");
\r
79 // SqlDateTime (int, int)
\r
80 CTest = new SqlDateTime (0, 0);
\r
82 // SqlDateTime (int, int, int)
\r
83 Assert.AreEqual (1900, CTest.Value.Year, "#A02");
\r
84 Assert.AreEqual (1, CTest.Value.Month, "#A03");
\r
85 Assert.AreEqual (1, CTest.Value.Day, "#A04");
\r
86 Assert.AreEqual (0, CTest.Value.Hour, "#A05");
\r
88 // SqlDateTime (int, int, int, int, int, int)
\r
89 CTest = new SqlDateTime (5000, 12, 31);
\r
90 Assert.AreEqual (5000, CTest.Value.Year, "#A06");
\r
91 Assert.AreEqual (12, CTest.Value.Month, "#A07");
\r
92 Assert.AreEqual (31, CTest.Value.Day, "#A08");
\r
94 // SqlDateTime (int, int, int, int, int, int, double)
\r
95 CTest = new SqlDateTime (1978, 5, 19, 3, 34, 0);
\r
96 Assert.AreEqual (1978, CTest.Value.Year, "#A09");
\r
97 Assert.AreEqual (5, CTest.Value.Month, "#A10");
\r
98 Assert.AreEqual (19, CTest.Value.Day, "#A11");
\r
99 Assert.AreEqual (3, CTest.Value.Hour, "#A12");
\r
100 Assert.AreEqual (34, CTest.Value.Minute, "#A13");
\r
101 Assert.AreEqual (0, CTest.Value.Second, "#A14");
\r
104 CTest = new SqlDateTime (10000, 12, 31);
\r
105 Assert.Fail ("#A15");
\r
106 } catch (Exception e) {
\r
107 Assert.AreEqual (typeof (SqlTypeException), e.GetType (), "#A16");
\r
110 // SqlDateTime (int, int, int, int, int, int, int)
\r
111 CTest = new SqlDateTime (1978, 5, 19, 3, 34, 0, 12);
\r
112 Assert.AreEqual (1978, CTest.Value.Year, "#A17");
\r
113 Assert.AreEqual (5, CTest.Value.Month, "#A18");
\r
114 Assert.AreEqual (19, CTest.Value.Day, "#A19");
\r
115 Assert.AreEqual (3, CTest.Value.Hour, "#A20");
\r
116 Assert.AreEqual (34, CTest.Value.Minute, "#A21");
\r
117 Assert.AreEqual (0, CTest.Value.Second, "#A22");
\r
118 Assert.AreEqual (0, CTest.Value.Millisecond, "#A23");
\r
121 // Test public fields
\r
123 public void PublicFields()
\r
126 Assert.AreEqual (9999, SqlDateTime.MaxValue.Value.Year, "#B01");
\r
127 Assert.AreEqual (12, SqlDateTime.MaxValue.Value.Month, "#B02");
\r
128 Assert.AreEqual (31, SqlDateTime.MaxValue.Value.Day, "#B03");
\r
129 Assert.AreEqual (23, SqlDateTime.MaxValue.Value.Hour, "#B04");
\r
130 Assert.AreEqual (59, SqlDateTime.MaxValue.Value.Minute, "#B05");
\r
131 Assert.AreEqual (59, SqlDateTime.MaxValue.Value.Second, "#B06");
\r
134 Assert.AreEqual (1753, SqlDateTime.MinValue.Value.Year, "#B07");
\r
135 Assert.AreEqual (1, SqlDateTime.MinValue.Value.Month, "#B08");
\r
136 Assert.AreEqual (1, SqlDateTime.MinValue.Value.Day, "#B09");
\r
137 Assert.AreEqual (0, SqlDateTime.MinValue.Value.Hour, "#B10");
\r
138 Assert.AreEqual (0, SqlDateTime.MinValue.Value.Minute, "#B11");
\r
139 Assert.AreEqual (0, SqlDateTime.MinValue.Value.Second, "#B12");
\r
142 Assert.IsTrue (SqlDateTime.Null.IsNull, "#B13");
\r
145 Assert.AreEqual (1080000, SqlDateTime.SQLTicksPerHour, "#B14");
\r
147 // SQLTicksPerMinute
\r
148 Assert.AreEqual (18000, SqlDateTime.SQLTicksPerMinute, "#B15");
\r
150 // SQLTicksPerSecond
\r
151 Assert.AreEqual (300, SqlDateTime.SQLTicksPerSecond, "#B16");
\r
156 public void Properties()
\r
159 Assert.AreEqual (37546, Test1.DayTicks, "#C01");
\r
162 int test = SqlDateTime.Null.DayTicks;
\r
163 Assert.Fail ("#C02");
\r
164 } catch (Exception e) {
\r
165 Assert.AreEqual (typeof (SqlNullValueException), e.GetType (), "#C03");
\r
169 Assert.IsTrue (SqlDateTime.Null.IsNull, "#C04");
\r
170 Assert.IsTrue (!Test2.IsNull, "#C05");
\r
173 Assert.AreEqual (10440000, Test1.TimeTicks, "#C06");
\r
176 int test = SqlDateTime.Null.TimeTicks;
\r
177 Assert.Fail ("#C07");
\r
178 } catch (Exception e) {
\r
179 Assert.AreEqual (typeof (SqlNullValueException), e.GetType (), "#C08");
\r
183 Assert.AreEqual (2003, Test2.Value.Year, "#C09");
\r
184 Assert.AreEqual (2002, Test1.Value.Year, "#C10");
\r
190 public void CompareTo()
\r
192 SqlString TestString = new SqlString ("This is a test");
\r
194 Assert.IsTrue (Test1.CompareTo (Test3) < 0, "#D01");
\r
195 Assert.IsTrue (Test2.CompareTo (Test1) > 0, "#D02");
\r
196 Assert.IsTrue (Test2.CompareTo (Test3) == 0, "#D03");
\r
197 Assert.IsTrue (Test1.CompareTo (SqlDateTime.Null) > 0, "#D04");
\r
200 Test1.CompareTo (TestString);
\r
201 Assert.Fail("#D05");
\r
202 } catch(Exception e) {
\r
203 Assert.AreEqual (typeof (ArgumentException), e.GetType (), "#D06");
\r
208 public void EqualsMethods()
\r
210 Assert.IsTrue (!Test1.Equals (Test2), "#E01");
\r
211 Assert.IsTrue (!Test2.Equals (new SqlString ("TEST")), "#E03");
\r
212 Assert.IsTrue (Test2.Equals (Test3), "#E04");
\r
214 // Static Equals()-method
\r
215 Assert.IsTrue (SqlDateTime.Equals (Test2, Test3).Value, "#E05");
\r
216 Assert.IsTrue (!SqlDateTime.Equals (Test1, Test2).Value, "#E06");
\r
220 public void GetHashCodeTest()
\r
222 // FIXME: Better way to test HashCode
\r
223 Assert.AreEqual (Test1.GetHashCode (), Test1.GetHashCode (), "#F01");
\r
224 Assert.IsTrue (Test2.GetHashCode () != Test1.GetHashCode (), "#F02");
\r
228 public void GetTypeTest()
\r
230 Assert.AreEqual ("System.Data.SqlTypes.SqlDateTime", Test1.GetType ().ToString (), "#G01");
\r
231 Assert.AreEqual ("System.DateTime", Test1.Value.GetType ().ToString (), "#G02");
\r
235 public void Greaters()
\r
238 Assert.IsTrue (!SqlDateTime.GreaterThan (Test1, Test2).Value, "#H01");
\r
239 Assert.IsTrue (SqlDateTime.GreaterThan (Test2, Test1).Value, "#H02");
\r
240 Assert.IsTrue (!SqlDateTime.GreaterThan (Test2, Test3).Value, "#H03");
\r
242 // GreaterTharOrEqual ()
\r
243 Assert.IsTrue (!SqlDateTime.GreaterThanOrEqual (Test1, Test2).Value, "#H04");
\r
244 Assert.IsTrue (SqlDateTime.GreaterThanOrEqual (Test2, Test1).Value, "#H05");
\r
245 Assert.IsTrue (SqlDateTime.GreaterThanOrEqual (Test2, Test3).Value, "#H06");
\r
249 public void Lessers()
\r
252 Assert.IsTrue (!SqlDateTime.LessThan (Test2, Test3).Value, "#I01");
\r
253 Assert.IsTrue (!SqlDateTime.LessThan (Test2, Test1).Value, "#I02");
\r
254 Assert.IsTrue (SqlDateTime.LessThan (Test1, Test3).Value, "#I03");
\r
256 // LessThanOrEqual ()
\r
257 Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test1, Test2).Value, "#I04");
\r
258 Assert.IsTrue (!SqlDateTime.LessThanOrEqual (Test2, Test1).Value, "#I05");
\r
259 Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test3, Test2).Value, "#I06");
\r
260 Assert.IsTrue (SqlDateTime.LessThanOrEqual (Test1, SqlDateTime.Null).IsNull, "#I07");
\r
264 public void NotEquals()
\r
266 Assert.IsTrue (SqlDateTime.NotEquals (Test1, Test2).Value, "#J01");
\r
267 Assert.IsTrue (SqlDateTime.NotEquals (Test3, Test1).Value, "#J02");
\r
268 Assert.IsTrue (!SqlDateTime.NotEquals (Test2, Test3).Value, "#J03");
\r
269 Assert.IsTrue (SqlDateTime.NotEquals (SqlDateTime.Null, Test2).IsNull, "#J04");
\r
273 public void Parse()
\r
276 SqlDateTime.Parse (null);
\r
277 Assert.Fail ("#K01");
\r
278 } catch (Exception e) {
\r
279 Assert.AreEqual (typeof (ArgumentNullException), e.GetType (), "#K02");
\r
283 SqlDateTime.Parse ("not-a-number");
\r
284 Assert.Fail ("#K03");
\r
285 } catch (Exception e) {
\r
286 Assert.AreEqual (typeof (FormatException), e.GetType (), "#K04");
\r
289 SqlDateTime t1 = SqlDateTime.Parse ("02/25/2002");
\r
290 Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K05");
\r
293 t1 = SqlDateTime.Parse ("2002-02-25");
\r
294 } catch (Exception e) {
\r
295 Assert.Fail ("#K06 " + e);
\r
298 // Thanks for Martin Baulig for these (DateTimeTest.cs)
\r
299 Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K07");
\r
300 t1 = SqlDateTime.Parse ("Monday, 25 February 2002");
\r
301 Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#K08");
\r
302 t1 = SqlDateTime.Parse ("Monday, 25 February 2002 05:25");
\r
303 Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#K09");
\r
304 t1 = SqlDateTime.Parse ("Monday, 25 February 2002 05:25:13");
\r
305 Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K10");
\r
306 t1 = SqlDateTime.Parse ("02/25/2002 05:25");
\r
307 Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#K11");
\r
308 t1 = SqlDateTime.Parse ("02/25/2002 05:25:13");
\r
309 Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K12");
\r
310 t1 = SqlDateTime.Parse ("2002-02-25 04:25:13Z");
\r
311 t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
\r
312 Assert.AreEqual (2002, t1.Value.Year, "#K13");
\r
313 Assert.AreEqual (02, t1.Value.Month, "#K14");
\r
314 Assert.AreEqual (25, t1.Value.Day, "#K15");
\r
315 Assert.AreEqual (04, t1.Value.Hour, "#K16");
\r
316 Assert.AreEqual (25, t1.Value.Minute, "#K17");
\r
317 Assert.AreEqual (13, t1.Value.Second, "#K18");
\r
319 SqlDateTime t2 = new SqlDateTime (DateTime.Today.Year, 2, 25);
\r
320 t1 = SqlDateTime.Parse ("February 25");
\r
321 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K19");
\r
323 t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
\r
324 t1 = SqlDateTime.Parse ("February 08");
\r
325 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K20");
\r
327 t1 = SqlDateTime.Parse ("Mon, 25 Feb 2002 04:25:13 GMT");
\r
328 t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
\r
329 Assert.AreEqual (2002, t1.Value.Year, "#K21");
\r
330 Assert.AreEqual (02, t1.Value.Month, "#K22");
\r
331 Assert.AreEqual (25, t1.Value.Day, "#K23");
\r
332 Assert.AreEqual (04, t1.Value.Hour, "#K24");
\r
333 Assert.AreEqual (25, t1.Value.Minute, "#K25");
\r
334 Assert.AreEqual (13, t1.Value.Second, "#K26");
\r
336 t1 = SqlDateTime.Parse ("2002-02-25T05:25:13");
\r
337 Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#K27");
\r
339 t2 = DateTime.Today + new TimeSpan (5,25,0);
\r
340 t1 = SqlDateTime.Parse ("05:25");
\r
341 Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#K28");
\r
343 t2 = DateTime.Today + new TimeSpan (5,25,13);
\r
344 t1 = SqlDateTime.Parse ("05:25:13");
\r
345 Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#K29");
\r
347 t2 = new SqlDateTime (2002, 2, 1);
\r
348 t1 = SqlDateTime.Parse ("2002 February");
\r
349 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K30");
\r
351 t2 = new SqlDateTime (2002, 2, 1);
\r
352 t1 = SqlDateTime.Parse ("2002 February");
\r
353 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K31");
\r
355 t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
\r
356 t1 = SqlDateTime.Parse ("February 8");
\r
358 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#K32");
\r
362 [Ignore ("This test is locale dependent.")]
\r
363 public void ToStringTest()
\r
366 // Thanks for Marting Baulig for these (DateTimeTest.cs)
\r
369 SqlDateTime t1 = new SqlDateTime (2002, 2, 25, 5, 25, 13);
\r
370 SqlDateTime t2 = new SqlDateTime (2002, 2, 25, 15, 25, 13);
\r
372 // Standard patterns
\r
373 Assert.AreEqual("2/25/2002 5:25:13 AM", t1.ToString (), "L01");
\r
374 Assert.AreEqual((SqlString)"2/25/2002 5:25:13 AM", t1.ToSqlString (), "L02");
\r
379 public void ArithmeticOperators()
\r
381 TimeSpan TestSpan = new TimeSpan (20, 1, 20, 20);
\r
382 SqlDateTime ResultDateTime;
\r
385 ResultDateTime = Test1 + TestSpan;
\r
386 Assert.AreEqual (2002, ResultDateTime.Value.Year, "#M01");
\r
387 Assert.AreEqual (8, ResultDateTime.Value.Day, "#M02");
\r
388 Assert.AreEqual (11, ResultDateTime.Value.Hour, "#M03");
\r
389 Assert.AreEqual (0, ResultDateTime.Value.Minute, "#M04");
\r
390 Assert.AreEqual (20, ResultDateTime.Value.Second, "#M05");
\r
391 Assert.IsTrue ((SqlDateTime.Null + TestSpan).IsNull, "#M06");
\r
394 ResultDateTime = SqlDateTime.MaxValue + TestSpan;
\r
395 Assert.Fail ("#M07");
\r
396 } catch (Exception e) {
\r
397 Assert.AreEqual (typeof (ArgumentOutOfRangeException), e.GetType (), "#M08");
\r
401 ResultDateTime = Test1 - TestSpan;
\r
402 Assert.AreEqual (2002, ResultDateTime.Value.Year, "#M09");
\r
403 Assert.AreEqual (29, ResultDateTime.Value.Day, "#M10");
\r
404 Assert.AreEqual (8, ResultDateTime.Value.Hour, "#M11");
\r
405 Assert.AreEqual (19, ResultDateTime.Value.Minute, "#M12");
\r
406 Assert.AreEqual (40, ResultDateTime.Value.Second, "#M13");
\r
407 Assert.IsTrue ((SqlDateTime.Null - TestSpan).IsNull, "#M14");
\r
410 ResultDateTime = SqlDateTime.MinValue - TestSpan;
\r
411 Assert.Fail ("#M15");
\r
412 } catch (Exception e) {
\r
413 Assert.AreEqual (typeof (SqlTypeException), e.GetType (), "#M16");
\r
418 public void ThanOrEqualOperators()
\r
421 Assert.IsTrue ((Test2 == Test3).Value, "#N01");
\r
422 Assert.IsTrue (!(Test1 == Test2).Value, "#N02");
\r
423 Assert.IsTrue ((Test1 == SqlDateTime.Null).IsNull, "#N03");
\r
426 Assert.IsTrue (!(Test2 != Test3).Value, "#N04");
\r
427 Assert.IsTrue ((Test1 != Test3).Value, "#N05");
\r
428 Assert.IsTrue ((Test1 != SqlDateTime.Null).IsNull, "#N06");
\r
431 Assert.IsTrue ((Test2 > Test1).Value, "#N07");
\r
432 Assert.IsTrue (!(Test3 > Test2).Value, "#N08");
\r
433 Assert.IsTrue ((Test1 > SqlDateTime.Null).IsNull, "#N09");
\r
436 Assert.IsTrue (!(Test1 >= Test3).Value, "#N10");
\r
437 Assert.IsTrue ((Test3 >= Test1).Value, "#N11");
\r
438 Assert.IsTrue ((Test2 >= Test3).Value, "#N12");
\r
439 Assert.IsTrue ((Test1 >= SqlDateTime.Null).IsNull, "#N13");
\r
442 Assert.IsTrue (!(Test2 < Test1).Value, "#N14");
\r
443 Assert.IsTrue ((Test1 < Test3).Value, "#N15");
\r
444 Assert.IsTrue (!(Test2 < Test3).Value, "#N16");
\r
445 Assert.IsTrue ((Test1 < SqlDateTime.Null).IsNull, "#N17");
\r
448 Assert.IsTrue ((Test1 <= Test3).Value, "#N18");
\r
449 Assert.IsTrue (!(Test3 <= Test1).Value, "#N19");
\r
450 Assert.IsTrue ((Test2 <= Test3).Value, "#N20");
\r
451 Assert.IsTrue ((Test1 <= SqlDateTime.Null).IsNull, "#N21");
\r
455 public void SqlDateTimeToDateTime()
\r
457 Assert.AreEqual (2002, ((DateTime)Test1).Year, "O01");
\r
458 Assert.AreEqual (2003, ((DateTime)Test2).Year, "O03");
\r
459 Assert.AreEqual (10, ((DateTime)Test1).Month, "O04");
\r
460 Assert.AreEqual (19, ((DateTime)Test1).Day, "O05");
\r
461 Assert.AreEqual (9, ((DateTime)Test1).Hour, "O06");
\r
462 Assert.AreEqual (40, ((DateTime)Test1).Minute, "O07");
\r
463 Assert.AreEqual (0, ((DateTime)Test1).Second, "O08");
\r
467 public void SqlStringToSqlDateTime()
\r
470 SqlString TestString = new SqlString ("02/25/2002");
\r
471 SqlDateTime t1 = (SqlDateTime)TestString;
\r
473 Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P01");
\r
475 // Thanks for Martin Baulig for these (DateTimeTest.cs)
\r
476 Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P02");
\r
477 t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002");
\r
478 Assert.AreEqual (myTicks[0], t1.Value.Ticks, "#P04");
\r
479 t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002 05:25");
\r
480 Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#P05");
\r
481 t1 = (SqlDateTime) new SqlString ("Monday, 25 February 2002 05:25:13");
\r
482 Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P05");
\r
483 t1 = (SqlDateTime) new SqlString ("02/25/2002 05:25");
\r
484 Assert.AreEqual (myTicks[3], t1.Value.Ticks, "#P06");
\r
485 t1 = (SqlDateTime) new SqlString ("02/25/2002 05:25:13");
\r
486 Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P07");
\r
487 t1 = (SqlDateTime) new SqlString ("2002-02-25 04:25:13Z");
\r
488 t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
\r
489 Assert.AreEqual (2002, t1.Value.Year, "#P08");
\r
490 Assert.AreEqual (02, t1.Value.Month, "#P09");
\r
491 Assert.AreEqual (25, t1.Value.Day, "#P10");
\r
492 Assert.AreEqual (04, t1.Value.Hour, "#P11");
\r
493 Assert.AreEqual (25, t1.Value.Minute, "#P12");
\r
494 Assert.AreEqual (13, t1.Value.Second, "#P13");
\r
496 SqlDateTime t2 = new SqlDateTime (DateTime.Today.Year, 2, 25);
\r
497 t1 = (SqlDateTime) new SqlString ("February 25");
\r
498 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P14");
\r
500 t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
\r
501 t1 = (SqlDateTime) new SqlString ("February 08");
\r
502 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P15");
\r
504 t1 = (SqlDateTime) new SqlString ("Mon, 25 Feb 2002 04:25:13 GMT");
\r
505 t1 = TimeZone.CurrentTimeZone.ToUniversalTime(t1.Value);
\r
506 Assert.AreEqual (2002, t1.Value.Year, "#P16");
\r
507 Assert.AreEqual (02, t1.Value.Month, "#P17");
\r
508 Assert.AreEqual (25, t1.Value.Day, "#P18");
\r
509 Assert.AreEqual (04, t1.Value.Hour, "#P19");
\r
510 Assert.AreEqual (25, t1.Value.Minute, "#P20");
\r
511 Assert.AreEqual (13, t1.Value.Second, "#P21");
\r
513 t1 = (SqlDateTime) new SqlString ("2002-02-25T05:25:13");
\r
514 Assert.AreEqual (myTicks[4], t1.Value.Ticks, "#P22");
\r
516 t2 = DateTime.Today + new TimeSpan (5,25,0);
\r
517 t1 = (SqlDateTime) new SqlString ("05:25");
\r
518 Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#P23");
\r
520 t2 = DateTime.Today + new TimeSpan (5,25,13);
\r
521 t1 = (SqlDateTime) new SqlString ("05:25:13");
\r
522 Assert.AreEqual(t2.Value.Ticks, t1.Value.Ticks, "#P24");
\r
524 t2 = new SqlDateTime (2002, 2, 1);
\r
525 t1 = (SqlDateTime) new SqlString ("2002 February");
\r
526 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P25");
\r
528 t2 = new SqlDateTime (2002, 2, 1);
\r
529 t1 = (SqlDateTime) new SqlString ("2002 February");
\r
530 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P26");
\r
532 t2 = new SqlDateTime (DateTime.Today.Year, 2, 8);
\r
533 t1 = (SqlDateTime) new SqlString ("February 8");
\r
535 Assert.AreEqual (t2.Value.Ticks, t1.Value.Ticks, "#P27");
\r
539 public void DateTimeToSqlDateTime()
\r
541 DateTime DateTimeTest = new DateTime (2002, 10, 19, 11, 53, 4);
\r
542 SqlDateTime Result = (SqlDateTime)DateTimeTest;
\r
543 Assert.AreEqual (2002, Result.Value.Year, "#Q01");
\r
544 Assert.AreEqual (10, Result.Value.Month, "#Q02");
\r
545 Assert.AreEqual (19, Result.Value.Day, "#Q03");
\r
546 Assert.AreEqual (11, Result.Value.Hour, "#Q04");
\r
547 Assert.AreEqual (53, Result.Value.Minute, "#Q05");
\r
548 Assert.AreEqual (4, Result.Value.Second, "#Q06");
\r
552 public void TicksRoundTrip ()
\r
554 SqlDateTime d1 = new SqlDateTime (2007, 05, 04, 18, 02, 40, 398.25);
\r
555 SqlDateTime d2 = new SqlDateTime (d1.DayTicks, d1.TimeTicks);
\r
557 Assert.AreEqual (39204, d1.DayTicks, "#R01");
\r
558 Assert.AreEqual (19488119, d1.TimeTicks, "#R02");
\r
559 Assert.AreEqual (633138985603970000, d1.Value.Ticks, "#R03");
\r
560 Assert.AreEqual (d1.DayTicks, d2.DayTicks, "#R04");
\r
561 Assert.AreEqual (d1.TimeTicks, d2.TimeTicks, "#R05");
\r
562 Assert.AreEqual (d1.Value.Ticks, d2.Value.Ticks, "#R06");
\r
563 Assert.AreEqual (d1, d2, "#R07");
\r
567 public void EffingBilisecond ()
\r
569 SqlDateTime d1 = new SqlDateTime (2007, 05, 04, 18, 02, 40, 398252);
\r
571 Assert.AreEqual (39204, d1.DayTicks, "#S01");
\r
572 Assert.AreEqual (19488119, d1.TimeTicks, "#S02");
\r
573 Assert.AreEqual (633138985603970000, d1.Value.Ticks, "#R03");
\r
578 public void GetXsdTypeTest ()
\r
580 XmlQualifiedName qualifiedName = SqlDateTime.GetXsdType (null);
\r
581 NUnit.Framework.Assert.AreEqual ("dateTime", qualifiedName.Name, "#A01");
\r