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. |