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