/mcs/class/System.Data.Linq/src/DbLinq/Test/Providers/ReadTests_DateTimeFunctions.cs
C# | 510 lines | 384 code | 99 blank | 27 comment | 46 complexity | c15cc40d29bf52df25df50a9b496624a MD5 | raw file
Possible License(s): GPL-2.0, Unlicense, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0
- #region MIT license
- //
- // MIT license
- //
- // Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- //
- #endregion
- using System;
- using System.Globalization;
- using System.Collections.Generic;
- using System.Text;
- using System.Linq;
- using System.Linq.Expressions;
- using NUnit.Framework;
- using Test_NUnit;
-
- using nwind;
-
- #if MONO_STRICT
- using System.Data.Linq;
- #else
- using DbLinq.Data.Linq;
- #endif
-
- // test ns
- #if MYSQL
- namespace Test_NUnit_MySql
- #elif ORACLE && ODP
- namespace Test_NUnit_OracleODP
- #elif ORACLE
- namespace Test_NUnit_Oracle
- #elif POSTGRES
- namespace Test_NUnit_PostgreSql
- #elif SQLITE
- namespace Test_NUnit_Sqlite
- #elif INGRES
- namespace Test_NUnit_Ingres
- #elif MSSQL && L2SQL
- namespace Test_NUnit_MsSql_Strict
- #elif MSSQL
- namespace Test_NUnit_MsSql
- #elif FIREBIRD
- namespace Test_NUnit_Firebird
- #endif
- {
- [TestFixture]
- public class ReadTests_DateTimeFunctions : TestBase
- {
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetYear()
- {
- Northwind db = CreateDB();
-
- var q = from o in db.Orders
- where o.OrderDate.Value.Year == 1996
- select o;
-
- var list = q.ToList();
- Assert.IsTrue(list.Count > 0);
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetMonth()
- {
- Northwind db = CreateDB();
-
- var q = from o in db.Orders
- where o.OrderDate.Value.Month == 10
- select o;
-
- var list = q.ToList();
- Assert.IsTrue(list.Count > 0);
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetDay()
- {
- Northwind db = CreateDB();
-
- var q = from o in db.Orders
- where o.OrderDate.Value.Day == 16
- select o;
-
- var list = q.ToList();
- Assert.IsTrue(list.Count > 0);
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetHours()
- {
- Northwind db = CreateDB();
-
- var q = (from o in db.Orders
- where o.OrderDate.Value.Hour == 0
- select o).ToList();
-
-
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetMinutes()
- {
- Northwind db = CreateDB();
-
- var q = (from o in db.Orders
- where o.OrderDate.Value.Minute == 0
- select o).ToList();
-
-
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetSeconds()
- {
- Northwind db = CreateDB();
-
- var q = (from o in db.Orders
- where o.OrderDate.Value.Second == 16
- select o).ToList();
-
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetMilliSeconds()
- {
- Northwind db = CreateDB();
-
- var q = (from o in db.Orders
- where o.OrderDate.Value.Millisecond == 0
- select o).ToList();
-
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void GetCurrentDateTime()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where e.BirthDate.HasValue && e.BirthDate.Value == DateTime.Now
- select e;
-
- var list = query.ToList();
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void Parse01()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where e.BirthDate.Value == DateTime.Parse("1984/05/02")
- select e;
-
- var list = query.ToList();
- }
-
- [Test]
- [ExpectedException(typeof(NotSupportedException))]
- public void Parse02()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where e.BirthDate.Value == DateTime.Parse(e.BirthDate.ToString())
- select e;
-
- var list = query.ToList();
- }
-
- [Test]
- public void Parse03()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where e.BirthDate.HasValue
- select e.BirthDate.Value == DateTime.Parse("1984/05/02");
-
-
- var list = query.ToList();
- }
-
- [Test]
- [ExpectedException(typeof(InvalidOperationException))]
- public void Parse04()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- select e.BirthDate.Value == DateTime.Parse(e.BirthDate.ToString());
-
-
- var list = query.ToList();
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffTotalHours()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalHours > 0
- select e;
-
-
- var list = query.ToList();
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffHours()
- {
- Northwind db = CreateDB();
-
- DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddHours(2);
-
- var query = from e in db.Employees
- where (e.BirthDate.Value - parameterDateTime).Hours > -2
- select e;
-
-
- var list = query.ToList();
- Assert.Greater(list.Count, 0);
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffTotalMinutes()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalMinutes > 0
- select e;
-
-
- var list = query.ToList();
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffMinutes()
- {
- Northwind db = CreateDB();
-
- DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddMinutes(2);
-
- var query = from e in db.Employees
- where (e.BirthDate.Value - parameterDateTime).Minutes == -2
- select e;
-
-
- var list = query.ToList();
- Assert.Greater(list.Count, 0);
- }
-
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffTotalSeconds()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalSeconds > 0
- select e;
-
-
- var list = query.ToList();
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffSeconds()
- {
- Northwind db = CreateDB();
-
- DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddSeconds(2);
-
- var query = from e in db.Employees
- where (e.BirthDate.Value - parameterDateTime).Seconds == -2
- select e;
-
-
- var list = query.ToList();
- Assert.Greater(list.Count, 0);
- }
-
- #if !DEBUG && (SQLITE || MSSQL)
- // L2SQL: SQL Server doesnt' seem to support millisecond precision.
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffMilliseconds()
- {
- Northwind db = CreateDB();
-
- DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddMilliseconds(2);
-
- var query = from e in db.Employees
- where (e.BirthDate.Value - parameterDateTime).Milliseconds == -2
- select e;
-
-
- var list = query.ToList();
- Assert.Greater(list.Count, 0);
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffTotalMilliseconds()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where (e.BirthDate.Value - DateTime.Parse("1984/05/02")).TotalMinutes > 0
- select e;
-
-
- var list = query.ToList();
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffDays()
- {
- Northwind db = CreateDB();
-
- DateTime parameterDateTime = db.Employees.First().BirthDate.Value.AddDays(2);
-
- var query = from e in db.Employees
- where (e.BirthDate.Value - parameterDateTime).Days == -2
- select e;
-
-
- var list = query.ToList();
- Assert.Greater(list.Count, 0);
- }
-
- #if !DEBUG && SQLITE
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffTotalDays()
- {
- Northwind db = CreateDB();
- DateTime firstDate = db.Employees.First().BirthDate.Value;
-
- DateTime parameterDate = firstDate.Date.AddDays(2);
- parameterDate = parameterDate.Date.AddHours(12);
-
-
- var query = from e in db.Employees
- where (e.BirthDate.Value -parameterDate).TotalDays == -2.5
- select e;
-
- var list = query.ToList();
-
- Assert.Greater(list.Count, 0);
- }
-
- #if !DEBUG && POSTGRES
- [Explicit]
- #endif
- [Test]
- [ExpectedException(typeof(InvalidOperationException))]
- public void DateTimeDiffTotalDaysSelectWithNulls01()
- {
-
- Northwind db = CreateDB();
-
- var employee = new Employee
- {
- FirstName = "Test First",
- LastName = "Test Last",
- };
- db.Employees.InsertOnSubmit(employee);
- db.SubmitChanges();
-
- DateTime firstDate = db.Employees.First().BirthDate.Value;
- firstDate.Date.AddDays(2);
- DateTime parameterDate = firstDate.Date.AddHours(12);
-
- try
- {
- //this test should throw an invalid operation exception since one BirthDate is null so select clausle should crash
- var query = from e in db.Employees
- select (e.BirthDate.Value - parameterDate).TotalDays;
-
- var list = query.ToList();
-
- Assert.Greater(list.Count, 0);
- }
- finally
- {
- db.Employees.DeleteOnSubmit(employee);
- db.SubmitChanges();
- }
- }
-
- #if !DEBUG && POSTGRES
- [Explicit]
- #endif
- [Test]
- public void DateTimeDiffTotalDaysSelectWithNulls02()
- {
- Northwind db = CreateDB();
-
- var employee = new Employee
- {
- FirstName = "Test First",
- LastName = "Test Last",
- };
- db.Employees.InsertOnSubmit(employee);
- db.SubmitChanges();
-
- DateTime firstDate = db.Employees.First().BirthDate.Value;
-
- DateTime parameterDate = firstDate.Date.AddDays(2);
- parameterDate = parameterDate.Date.AddHours(12);
-
- try
- {
- var query = from e in db.Employees
- where e.BirthDate.HasValue
- select (e.BirthDate.Value - parameterDate).TotalDays;
-
- var list = query.ToList();
-
- Assert.Greater(list.Count, 0);
- }
- finally
- {
- db.Employees.DeleteOnSubmit(employee);
- db.SubmitChanges();
- }
- }
-
-
- #if !DEBUG && (SQLITE || (MSSQL && L2SQL))
- // L2SQL: System.Data.SqlClient.SqlException : The datepart minute is not supported by date function datepart for data type date.
- [Explicit]
- #endif
- [Test]
- public void DateGetDate()
- {
- Northwind db = CreateDB();
- var query = from e in db.Employees
- where (e.BirthDate.Value.Date).Minute == 0
- select e;
-
-
- var list = query.ToList();
- }
- }
- }