From: <ste...@us...> - 2010-03-17 14:18:10
|
Revision: 4958 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4958&view=rev Author: steverstrong Date: 2010-03-17 14:18:03 +0000 (Wed, 17 Mar 2010) Log Message: ----------- Added support for DateTime.Date in Linq query, and tweaked ByteCode test to try to resolve buggered TeamCity server Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs trunk/nhibernate/src/NHibernate/Linq/Functions/DateTimeGenerator.cs trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/TestCase.cs trunk/nhibernate/src/NHibernate.Test/App.config trunk/nhibernate/src/NHibernate.Test/Linq/LinqTestCase.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Linq/DateTimeTests.cs Modified: trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-03-17 12:41:45 UTC (rev 4957) +++ trunk/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs 2010-03-17 14:18:03 UTC (rev 4958) @@ -116,7 +116,8 @@ RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(day, ?1)")); RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(month, ?1)")); RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(year, ?1)")); - RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); + RegisterFunction("date", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(dd, 0, datediff(dd, 0, ?1))")); + RegisterFunction("concat", new VarArgsSQLFunction(NHibernateUtil.String, "(", "+", ")")); RegisterFunction("digits", new StandardSQLFunction("digits", NHibernateUtil.String)); RegisterFunction("chr", new StandardSQLFunction("chr", NHibernateUtil.Character)); RegisterFunction("upper", new StandardSQLFunction("upper")); Modified: trunk/nhibernate/src/NHibernate/Linq/Functions/DateTimeGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Linq/Functions/DateTimeGenerator.cs 2010-03-17 12:41:45 UTC (rev 4957) +++ trunk/nhibernate/src/NHibernate/Linq/Functions/DateTimeGenerator.cs 2010-03-17 14:18:03 UTC (rev 4958) @@ -25,6 +25,7 @@ ReflectionHelper.GetProperty((DateTime x) => x.Hour), ReflectionHelper.GetProperty((DateTime x) => x.Minute), ReflectionHelper.GetProperty((DateTime x) => x.Second), + ReflectionHelper.GetProperty((DateTime x) => x.Date), }; } Modified: trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/TestCase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/TestCase.cs 2010-03-17 12:41:45 UTC (rev 4957) +++ trunk/nhibernate/src/NHibernate.ByteCode.Castle.Tests/TestCase.cs 2010-03-17 14:18:03 UTC (rev 4958) @@ -197,7 +197,8 @@ private void CreateSchema() { - new SchemaExport(cfg).Create(OutputDdl, true); + new SchemaExport(cfg).Drop(OutputDdl, true); + new SchemaExport(cfg).Create(OutputDdl, true); } private void DropSchema() Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2010-03-17 12:41:45 UTC (rev 4957) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2010-03-17 14:18:03 UTC (rev 4958) @@ -126,7 +126,7 @@ </logger> <logger name="NHibernate.SQL"> - <level value="DEBUG" /> + <level value="OFF" /> </logger> <logger name="NHibernate.AdoNet.AbstractBatcher"> Added: trunk/nhibernate/src/NHibernate.Test/Linq/DateTimeTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Linq/DateTimeTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Linq/DateTimeTests.cs 2010-03-17 14:18:03 UTC (rev 4958) @@ -0,0 +1,50 @@ +using System; +using System.Linq; +using NUnit.Framework; + +namespace NHibernate.Test.Linq +{ + [TestFixture] + public class DateTimeTests : LinqTestCase + { + [Test] + public void CanQueryByYear() + { + var x = (from o in db.Orders + where o.OrderDate.Value.Year == 1998 + select o).ToList(); + + Assert.AreEqual(270, x.Count()); + } + + [Test] + public void CanQueryByDate() + { + var x = (from o in db.Orders + where o.OrderDate.Value.Date == new DateTime(1998, 02, 26) + select o).ToList(); + + Assert.AreEqual(6, x.Count()); + } + + [Test] + public void CanQueryByDateTime() + { + var x = (from o in db.Orders + where o.OrderDate.Value == new DateTime(1998, 02, 26) + select o).ToList(); + + Assert.AreEqual(5, x.Count()); + } + + [Test] + public void CanQueryByDateTime2() + { + var x = (from o in db.Orders + where o.OrderDate.Value == new DateTime(1998, 02, 26, 0, 1, 0) + select o).ToList(); + + Assert.AreEqual(1, x.Count()); + } + } +} Modified: trunk/nhibernate/src/NHibernate.Test/Linq/LinqTestCase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Linq/LinqTestCase.cs 2010-03-17 12:41:45 UTC (rev 4957) +++ trunk/nhibernate/src/NHibernate.Test/Linq/LinqTestCase.cs 2010-03-17 14:18:03 UTC (rev 4958) @@ -1208,7 +1208,7 @@ order = new Order { OrderId = 10905, Customer = customers.Where(c => c.CompanyName == "Wellington Importadora").First(), Employee = employees.Where(e => e.LastName == "Dodsworth").First(), OrderDate = DateTime.Parse("Feb 24 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 24 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 6 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "United Package").First(), Freight = 13.72M, ShippedTo = "Wellington Importadora",ShippingAddress = new Address("Rua do Mercado, 12", "Resende", "SP", "08737-363", "Brazil", null, null) }; session.Insert(order); orders.Add(order); order = new Order { OrderId = 10906, Customer = customers.Where(c => c.CompanyName == "Wolski Zajazd").First(), Employee = employees.Where(e => e.LastName == "Peacock").First(), OrderDate = DateTime.Parse("Feb 25 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 11 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 3 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "Federal Shipping").First(), Freight = 26.29M, ShippedTo = "Wolski Zajazd",ShippingAddress = new Address("ul. Filtrowa 68", "Warszawa", "null", "01-012", "Poland", null, null) }; session.Insert(order); orders.Add(order); order = new Order { OrderId = 10907, Customer = customers.Where(c => c.CompanyName == "Spécialités du monde").First(), Employee = employees.Where(e => e.LastName == "Suyama").First(), OrderDate = DateTime.Parse("Feb 25 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 25 1998 12:00AM"), ShippingDate = DateTime.Parse("Feb 27 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "Federal Shipping").First(), Freight = 9.19M, ShippedTo = "Spécialités du monde",ShippingAddress = new Address("25, rue Lauriston", "Paris", "null", "75016", "France", null, null) }; session.Insert(order); orders.Add(order); - order = new Order { OrderId = 10908, Customer = customers.Where(c => c.CompanyName == "Reggiani Caseifici").First(), Employee = employees.Where(e => e.LastName == "Peacock").First(), OrderDate = DateTime.Parse("Feb 26 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 26 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 6 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "United Package").First(), Freight = 32.96M, ShippedTo = "Reggiani Caseifici",ShippingAddress = new Address("Strada Provinciale 124", "Reggio Emilia", "null", "42100", "Italy", null, null) }; session.Insert(order); orders.Add(order); + order = new Order { OrderId = 10908, Customer = customers.Where(c => c.CompanyName == "Reggiani Caseifici").First(), Employee = employees.Where(e => e.LastName == "Peacock").First(), OrderDate = DateTime.Parse("Feb 26 1998 12:01AM"), RequiredDate = DateTime.Parse("Mar 26 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 6 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "United Package").First(), Freight = 32.96M, ShippedTo = "Reggiani Caseifici",ShippingAddress = new Address("Strada Provinciale 124", "Reggio Emilia", "null", "42100", "Italy", null, null) }; session.Insert(order); orders.Add(order); order = new Order { OrderId = 10909, Customer = customers.Where(c => c.CompanyName == "Santé Gourmet").First(), Employee = employees.Where(e => e.LastName == "Davolio").First(), OrderDate = DateTime.Parse("Feb 26 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 26 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 10 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "United Package").First(), Freight = 53.05M, ShippedTo = "Santé Gourmet",ShippingAddress = new Address("Erling Skakkes gate 78", "Stavern", "null", "4110", "Norway", null, null) }; session.Insert(order); orders.Add(order); order = new Order { OrderId = 10910, Customer = customers.Where(c => c.CompanyName == "Wilman Kala").First(), Employee = employees.Where(e => e.LastName == "Davolio").First(), OrderDate = DateTime.Parse("Feb 26 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 26 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 4 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "Federal Shipping").First(), Freight = 38.11M, ShippedTo = "Wilman Kala",ShippingAddress = new Address("Keskuskatu 45", "Helsinki", "null", "21240", "Finland", null, null) }; session.Insert(order); orders.Add(order); order = new Order { OrderId = 10911, Customer = customers.Where(c => c.CompanyName == "Godos Cocina Típica").First(), Employee = employees.Where(e => e.LastName == "Leverling").First(), OrderDate = DateTime.Parse("Feb 26 1998 12:00AM"), RequiredDate = DateTime.Parse("Mar 26 1998 12:00AM"), ShippingDate = DateTime.Parse("Mar 5 1998 12:00AM"), Shipper = shippers.Where(s => s.CompanyName == "Speedy Express").First(), Freight = 38.19M, ShippedTo = "Godos Cocina Típica",ShippingAddress = new Address("C/ Romero, 33", "Sevilla", "null", "41101", "Spain", null, null) }; session.Insert(order); orders.Add(order); Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-03-17 12:41:45 UTC (rev 4957) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-03-17 14:18:03 UTC (rev 4958) @@ -382,6 +382,7 @@ <Compile Include="Linq\BinaryBooleanExpressionTests.cs" /> <Compile Include="Linq\BinaryExpressionOrdererTests.cs" /> <Compile Include="Linq\CollectionAssert.cs" /> + <Compile Include="Linq\DateTimeTests.cs" /> <Compile Include="Linq\DynamicQueryTests.cs" /> <Compile Include="Linq\EagerLoadTests.cs" /> <Compile Include="Linq\Entities\Address.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |