|
From: <dar...@us...> - 2009-03-25 18:36:44
|
Revision: 4154
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4154&view=rev
Author: darioquintana
Date: 2009-03-25 18:35:41 +0000 (Wed, 25 Mar 2009)
Log Message:
-----------
NH-1715 partially applied, because the duration < 0 hours or > 24 hours shouldn't be handle with "TimeSpan" NHibernate type.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/TimeSpanType.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/ClassA.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Mappings.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Type/TimeSpanType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/TimeSpanType.cs 2009-03-24 11:56:15 UTC (rev 4153)
+++ trunk/nhibernate/src/NHibernate/Type/TimeSpanType.cs 2009-03-25 18:35:41 UTC (rev 4154)
@@ -32,9 +32,8 @@
object value = rs[index];
if(value is TimeSpan)
return (TimeSpan)value;
-
- DateTime time = (DateTime)rs[index];
- return new TimeSpan(Convert.ToInt64(time.Ticks));
+
+ return ((DateTime)value).Subtract(BaseDateValue);
}
catch (Exception ex)
{
@@ -50,8 +49,7 @@
if (value is TimeSpan) //For those dialects where DbType.Time means TimeSpan.
return (TimeSpan)value;
- DateTime time = (DateTime)rs[name];
- return new TimeSpan(Convert.ToInt64(time.Ticks));
+ return ((DateTime)value).Subtract(BaseDateValue);
}
catch (Exception ex)
{
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/ClassA.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/ClassA.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/ClassA.cs 2009-03-25 18:35:41 UTC (rev 4154)
@@ -0,0 +1,10 @@
+using System;
+
+namespace NHibernate.Test.NHSpecificTest.NH1715
+{
+ public class ClassA
+ {
+ public virtual int Id { get; set; }
+ public virtual TimeSpan Time { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Fixture.cs 2009-03-25 18:35:41 UTC (rev 4154)
@@ -0,0 +1,55 @@
+using System;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1715
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+ protected override void OnTearDown()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ s.Delete("from ClassA");
+ tx.Commit();
+ }
+ }
+
+ [Test]
+ public void TimeSpanLargerThan2h()
+ {
+ var time = new TimeSpan(0, 2, 1, 0);
+ var entity = new ClassA {Time = time};
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ s.Save(entity);
+ tx.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ {
+ Assert.AreEqual(time, s.Get<ClassA>(entity.Id).Time);
+ }
+ }
+
+ [Test]
+ public void VerifyDaysShouldBeZeroInSmallTimeSpan()
+ {
+ var time = new TimeSpan(1, 0, 0);
+ var entity = new ClassA {Time = time};
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ s.Save(entity);
+ tx.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ {
+ Assert.AreEqual(0, s.Get<ClassA>(entity.Id).Time.Days);
+ }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1715/Mappings.hbm.xml 2009-03-25 18:35:41 UTC (rev 4154)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ namespace="NHibernate.Test.NHSpecificTest.NH1715"
+ assembly="NHibernate.Test">
+
+ <class name="ClassA">
+ <id name="Id">
+ <generator class="native"/>
+ </id>
+ <property name="Time" type="TimeSpan"/>
+ </class>
+
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-24 11:56:15 UTC (rev 4153)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-25 18:35:41 UTC (rev 4154)
@@ -297,6 +297,8 @@
<Compile Include="NHSpecificTest\NH1694\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1706\Domain.cs" />
<Compile Include="NHSpecificTest\NH1706\KeyPropertyRefFixture.cs" />
+ <Compile Include="NHSpecificTest\NH1715\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1715\ClassA.cs" />
<Compile Include="NHSpecificTest\NH645\HQLFunctionFixture.cs" />
<Compile Include="HQL\HQLFunctions.cs" />
<Compile Include="HQL\Human.cs" />
@@ -1687,6 +1689,7 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1715\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\DtcFailures\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1694\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1706\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|