From: <te...@us...> - 2009-05-17 20:36:10
|
Revision: 4334 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4334&view=rev Author: tehlike Date: 2009-05-17 20:36:05 +0000 (Sun, 17 May 2009) Log Message: ----------- Adding tests for NH-1159 proving it is not an issue. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Contact.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/ContactTitle.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/HibernateInterceptor.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Mappings.hbm.xml Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Contact.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Contact.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Contact.cs 2009-05-17 20:36:05 UTC (rev 4334) @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1159 +{ + [Serializable] + public partial class Contact + { + + private bool isChanged; + private Int64 id; + private string forename; + private string surname; + private string preferredname; + + public Contact() + { + this.id = 0; + this.forename = String.Empty; + this.surname = String.Empty; + this.preferredname = String.Empty; + } + + public Contact( + string forename, + string surname) + : this() + { + this.forename = forename; + this.surname = surname; + this.preferredname = String.Empty; + } + + + #region Public Properties + + public virtual Int64 Id + { + get { return id; } + set + { + isChanged |= (id != value); + id = value; + } + + } + + public virtual string Forename + { + get { return forename; } + + set + { + if (value == null) + throw new ArgumentOutOfRangeException("Null value not allowed for Forename", value, "null"); + + if (value.Length > 50) + throw new ArgumentOutOfRangeException("Invalid value for Forename", value, value.ToString()); + + isChanged |= (forename != value); forename = value; + } + } + + public virtual string Surname + { + get { return surname; } + + set + { + if (value == null) + throw new ArgumentOutOfRangeException("Null value not allowed for Surname", value, "null"); + + if (value.Length > 50) + throw new ArgumentOutOfRangeException("Invalid value for Surname", value, value.ToString()); + + isChanged |= (surname != value); surname = value; + } + } + + public virtual string PreferredName + { + get { return preferredname; } + + set + { + if (value != null && value.Length > 50) + throw new ArgumentOutOfRangeException("Invalid value for PreferredName", value, value.ToString()); + + isChanged |= (preferredname != value); preferredname = value; + } + } + + /// <summary> + /// Returns whether or not the object has changed it's values. + /// </summary> + public virtual bool IsChanged + { + get { return isChanged; } + } + + #endregion + + #region Equals And HashCode Overrides + /// <summary> + /// local implementation of Equals based on unique value members + /// </summary> + public override bool Equals(object obj) + { + if (this == obj) return true; + if ((obj == null) || (obj.GetType() != this.GetType())) return false; + Contact castObj = (Contact)obj; + return (castObj != null) && + (this.id == castObj.Id); + } + + /// <summary> + /// local implementation of GetHashCode based on unique value members + /// </summary> + public override int GetHashCode() + { + + int hash = 57; + hash = 27 * hash * id.GetHashCode(); + return hash; + } + #endregion + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/ContactTitle.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/ContactTitle.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/ContactTitle.cs 2009-05-17 20:36:05 UTC (rev 4334) @@ -0,0 +1,135 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.NH1159 +{ + /// <summary> + /// Generated by MyGeneration using the NHibernate Object Mapping template + /// </summary> + [Serializable] + public partial class ContactTitle + { + + #region Private Members + private bool isChanged; + + private Int64 id; + private IList contactList; + private string descr; + #endregion + + #region Default ( Empty ) Class Constuctor + /// <summary> + /// default constructor + /// </summary> + public ContactTitle() + { + id = 0; + contactList = new ArrayList(); + descr = String.Empty; + } + #endregion // End of Default ( Empty ) Class Constuctor + + #region Required Fields Only Constructor + /// <summary> + /// required (not null) fields only constructor + /// </summary> + public ContactTitle( + string descr) + : this() + { + this.descr = descr; + } + #endregion // End Required Fields Only Constructor + + #region Public Properties + + /// <summary> + /// + /// </summary> + public virtual Int64 Id + { + get { return id; } + set + { + isChanged |= (id != value); + id = value; + } + + } + + public virtual IList ContactList + { + get + { + return contactList; + } + set + { + contactList = value; + } + } + + /// <summary> + /// + /// </summary> + public virtual string Descr + { + get { return descr; } + + set + { + if (value == null) + throw new ArgumentOutOfRangeException("Null value not allowed for Descr", value, "null"); + + if (value.Length > 50) + throw new ArgumentOutOfRangeException("Invalid value for Descr", value, value.ToString()); + + isChanged |= (descr != value); descr = value; + } + } + + /// <summary> + /// Returns whether or not the object has changed it's values. + /// </summary> + public virtual bool IsChanged + { + get { return isChanged; } + } + + #endregion + + #region Equals And HashCode Overrides + /// <summary> + /// local implementation of Equals based on unique value members + /// </summary> + public override bool Equals(object obj) + { + if (this == obj) return true; + if ((obj == null) || (obj.GetType() != this.GetType())) return false; + ContactTitle castObj = (ContactTitle)obj; + return (castObj != null) && + (this.id == castObj.Id); + } + + /// <summary> + /// local implementation of GetHashCode based on unique value members + /// </summary> + public override int GetHashCode() + { + + int hash = 57; + hash = 27 * hash * id.GetHashCode(); + return hash; + } + #endregion + + public override string ToString() + { + return id.ToString() + " " + descr; + } + } + +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Fixture.cs 2009-05-17 20:36:05 UTC (rev 4334) @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NHibernate.Criterion; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.NH1159 +{ + [TestFixture] + public class Fixture:BugTestCase + { + + protected override void OnSetUp() + { + using (ISession session = OpenSession()) + using (ITransaction tran = session.BeginTransaction()) + { + Contact c=new Contact{Id=1,Forename ="David",Surname="Bates",PreferredName="Davey"}; + session.Save(c); + tran.Commit(); + } + HibernateInterceptor.CallCount = 0; + + } + + protected override void OnTearDown() + { + using (ISession session = OpenSession()) + using (ITransaction tran = session.BeginTransaction()) + { + session.Delete("from Contact"); + tran.Commit(); + } + } + + [Test] + public void DoesNotFlushWithCriteriaWithCommit() + { + using (ISession session = OpenSession(new HibernateInterceptor())) + using (ITransaction tran = session.BeginTransaction()) + { + session.FlushMode = FlushMode.Commit; + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(0)); + Contact contact = session.Get<Contact>((Int64)1); + contact.PreferredName = "Updated preferred name"; + session.Flush(); + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + contact.Forename = "Updated forename"; + + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + ICriteria query = session.CreateCriteria(typeof(ContactTitle)); + query.Add(Expression.Eq("Id", (Int64)1)); + query.UniqueResult<ContactTitle>(); + + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + contact.Surname = "Updated surname"; + session.Flush(); + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(2)); + + session.SaveOrUpdateCopy(contact); + } + } + [Test] + public void DoesNotFlushWithCriteriaWithNever() + { + using (ISession session = OpenSession(new HibernateInterceptor())) + using (ITransaction tran = session.BeginTransaction()) + { + session.FlushMode = FlushMode.Never; + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(0)); + Contact contact = session.Get<Contact>((Int64)1); + contact.PreferredName = "Updated preferred name"; + session.Flush(); + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + contact.Forename = "Updated forename"; + + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + ICriteria query = session.CreateCriteria(typeof(ContactTitle)); + query.Add(Expression.Eq("Id", (Int64)1)); + query.UniqueResult<ContactTitle>(); + + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + contact.Surname = "Updated surname"; + session.Flush(); + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(2)); + + session.SaveOrUpdateCopy(contact); + } + } + [Test] + public void DoesNotFlushWithCriteriaWithAuto() + { + using (ISession session = OpenSession(new HibernateInterceptor())) + using (ITransaction tran = session.BeginTransaction()) + { + session.FlushMode = FlushMode.Auto; + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(0)); + + Contact contact = session.Get<Contact>((Int64)1); + contact.PreferredName = "Updated preferred name"; + session.Flush(); + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + contact.Forename = "Updated forename"; + + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(1)); + + ICriteria query = session.CreateCriteria(typeof(ContactTitle)); + query.Add(Expression.Eq("Id", (Int64)1)); + query.UniqueResult<ContactTitle>(); + + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(2)); + + contact.Surname = "Updated surname"; + session.Flush(); + Assert.That(HibernateInterceptor.CallCount, Is.EqualTo(3)); + + session.SaveOrUpdateCopy(contact); + } + } + } +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/HibernateInterceptor.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/HibernateInterceptor.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/HibernateInterceptor.cs 2009-05-17 20:36:05 UTC (rev 4334) @@ -0,0 +1,16 @@ +using System; +using NHibernate.Type; + +namespace NHibernate.Test.NHSpecificTest.NH1159 +{ + public class HibernateInterceptor : EmptyInterceptor + { + public static int CallCount = 0; + public override bool OnFlushDirty(object entity, object id, object[] currentState, object[] previousState, string[] propertyNames, IType[] types) + { + CallCount++; + return false; + } + } + +} Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1159/Mappings.hbm.xml 2009-05-17 20:36:05 UTC (rev 4334) @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.NHSpecificTest.NH1159"> + <class name="Contact" table="Contact"> + <id name="Id" column="id" type="Int64" unsaved-value="0"> + <generator class="assigned"/> + </id> + <property column="forename" type="String" name="Forename" not-null="true" length="50" /> + <property column="surname" type="String" name="Surname" not-null="true" length="50" /> + <property column="preferredName" type="String" name="PreferredName" length="50" /> + </class> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-17 16:35:57 UTC (rev 4333) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-17 20:36:05 UTC (rev 4334) @@ -336,6 +336,10 @@ <Compile Include="NHSpecificTest\ElementsEnums\Something.cs" /> <Compile Include="NHSpecificTest\NH1093\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1093\SimpleCached.cs" /> + <Compile Include="NHSpecificTest\NH1159\Contact.cs" /> + <Compile Include="NHSpecificTest\NH1159\ContactTitle.cs" /> + <Compile Include="NHSpecificTest\NH1159\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH1159\HibernateInterceptor.cs" /> <Compile Include="NHSpecificTest\NH1264\Fixture.cs" /> <Compile Include="NHSpecificTest\NH1264\Name.cs" /> <Compile Include="NHSpecificTest\NH1264\Passenger.cs" /> @@ -1806,6 +1810,7 @@ <EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" /> <EmbeddedResource Include="Ado\VerySimple.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH1159\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1093\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1714\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1763\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |