From: <fab...@us...> - 2009-02-21 17:08:33
|
Revision: 4096 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4096&view=rev Author: fabiomaulo Date: 2009-02-21 17:08:24 +0000 (Sat, 21 Feb 2009) Log Message: ----------- Test for version generated Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 04:12:45 UTC (rev 4095) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 17:08:24 UTC (rev 4096) @@ -1105,6 +1105,9 @@ <Compile Include="UtilityTest\ThreadSafeDictionaryFixture.cs" /> <Compile Include="UtilityTest\TypeNameParserFixture.cs" /> <Compile Include="UtilityTest\WeakHashtableFixture.cs" /> + <Compile Include="VersionTest\Db\MsSQL\BinaryTimestamp.cs" /> + <Compile Include="VersionTest\Db\MsSQL\GeneratedBinaryVersionFixture.cs" /> + <Compile Include="VersionTest\Db\MsSQL\SimpleVersioned.cs" /> <Compile Include="VersionTest\Person.cs" /> <Compile Include="VersionTest\Task.cs" /> <Compile Include="VersionTest\Thing.cs" /> @@ -1662,6 +1665,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="VersionTest\Db\MsSQL\SimpleVersioned.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1675\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1677\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1679\Mappings.hbm.xml" /> Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/BinaryTimestamp.cs 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,105 @@ +using System.Data; +using NHibernate.Engine; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + public class BinaryTimestamp : IUserVersionType + { + #region IUserVersionType Members + + public object Next(object current, ISessionImplementor session) + { + return current; + } + + public object Seed(ISessionImplementor session) + { + return new byte[8]; + } + + public object Assemble(object cached, object owner) + { + return DeepCopy(cached); + } + + public object DeepCopy(object value) + { + return value; + } + + public object Disassemble(object value) + { + return DeepCopy(value); + } + + public int GetHashCode(object x) + { + return x.GetHashCode(); + } + + public bool IsMutable + { + get { return false; } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + return rs.GetValue(rs.GetOrdinal(names[0])); + } + + public void NullSafeSet(IDbCommand cmd, object value, int index) + { + NHibernateUtil.Binary.NullSafeSet(cmd, value, index); + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public System.Type ReturnedType + { + get { return typeof (byte[]); } + } + + public SqlType[] SqlTypes + { + get { return new[] {new SqlType(DbType.Binary, 8)}; } + } + + public int Compare(object x, object y) + { + var xbytes = (byte[]) x; + var ybytes = (byte[]) y; + if (xbytes.Length < ybytes.Length) + { + return -1; + } + if (xbytes.Length > ybytes.Length) + { + return 1; + } + for (int i = 0; i < xbytes.Length; i++) + { + if (xbytes[i] < ybytes[i]) + { + return -1; + } + if (xbytes[i] > ybytes[i]) + { + return 1; + } + } + return 0; + } + + bool IUserType.Equals(object x, object y) + { + return (x == y); + } + + #endregion + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,46 @@ +using System.Collections; +using NHibernate.Dialect; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + // related issues NH-1687, NH-1685 + + [TestFixture, Ignore("Not fixed yet.")] + public class GeneratedBinaryVersionFixture : TestCase + { + protected override IList Mappings + { + get { return new[] { "VersionTest.Db.MsSQL.SimpleVersioned.hbm.xml" }; } + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2000Dialect; + } + + [Test] + public void ShouldRetrieveVersionAfterFlush() + { + var e = new SimpleVersioned {Something = "something"}; + using (ISession s = OpenSession()) + { + using (ITransaction tx = s.BeginTransaction()) + { + Assert.That(e.LastModified, Is.Null); + s.Save(e); + s.Flush(); + Assert.That(e.LastModified, Is.Not.Null); + s.Delete(e); + tx.Commit(); + } + } + } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/GeneratedBinaryVersionFixture.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,9 @@ +namespace NHibernate.Test.VersionTest.Db.MsSQL +{ + public class SimpleVersioned + { + public virtual int Id { get; private set; } + public virtual byte[] LastModified { get; private set; } + public virtual string Something { get; set; } + } +} \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml 2009-02-21 17:08:24 UTC (rev 4096) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.VersionTest.Db.MsSQL"> + + <typedef name="ByteTimestamp" + class="NHibernate.Test.VersionTest.Db.MsSQL.BinaryTimestamp, NHibernate.Test"/> + + <class name="SimpleVersioned" table="GenVersion" optimistic-lock="version" > + <id name="Id" access="backfield"> + <generator class="native" /> + </id> + <version name="LastModified" type="ByteTimestamp" generated="always" unsaved-value="null" access="backfield"> + <column name="LastModified" not-null="false" sql-type="timestamp"/> + </version> + <property name="Something"/> + </class> + +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/VersionTest/Db/MsSQL/SimpleVersioned.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |