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