From: <fab...@us...> - 2009-02-24 18:00:22
|
Revision: 4097 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4097&view=rev Author: fabiomaulo Date: 2009-02-24 18:00:18 +0000 (Tue, 24 Feb 2009) Log Message: ----------- Bug fix in SingletonEnumerable Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Util/SingletonEnumerable.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/UtilityTest/SingletonEnumerableFixture.cs Modified: trunk/nhibernate/src/NHibernate/Util/SingletonEnumerable.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Util/SingletonEnumerable.cs 2009-02-21 17:08:24 UTC (rev 4096) +++ trunk/nhibernate/src/NHibernate/Util/SingletonEnumerable.cs 2009-02-24 18:00:18 UTC (rev 4097) @@ -44,11 +44,7 @@ public T Current { - get - { - if (hasNext) hasNext = false; - return current; - } + get { return current; } } #endregion @@ -65,7 +61,9 @@ public bool MoveNext() { - return hasNext; + var result = hasNext; + hasNext = false; + return result; } public void Reset() Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-21 17:08:24 UTC (rev 4096) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-24 18:00:18 UTC (rev 4097) @@ -1100,6 +1100,7 @@ <Compile Include="UtilityTest\ReflectHelperFixture.cs" /> <Compile Include="UtilityTest\SafetyEnumerableFixture.cs" /> <Compile Include="UtilityTest\SequencedHashMapFixture.cs" /> + <Compile Include="UtilityTest\SingletonEnumerableFixture.cs" /> <Compile Include="UtilityTest\StringHelperFixture.cs" /> <Compile Include="UtilityTest\StringTokenizerFixture.cs" /> <Compile Include="UtilityTest\ThreadSafeDictionaryFixture.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/UtilityTest/SingletonEnumerableFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/UtilityTest/SingletonEnumerableFixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/UtilityTest/SingletonEnumerableFixture.cs 2009-02-24 18:00:18 UTC (rev 4097) @@ -0,0 +1,50 @@ +using System.Collections; +using NHibernate.Util; +using NUnit.Framework; +using NUnit.Framework.SyntaxHelpers; + +namespace NHibernate.Test.UtilityTest +{ + [TestFixture] + public class SingletonEnumerableFixture + { + [Test] + public void DifferentEnumeratorInEachRequest() + { + var obj = new object(); + var se = new SingletonEnumerable<object>(obj); + Assert.That(!ReferenceEquals(se.GetEnumerator(), se.GetEnumerator())); + + // with no generic enumerator + var see = (IEnumerable) se; + Assert.That(!ReferenceEquals(see.GetEnumerator(), see.GetEnumerator())); + } + + [Test] + public void ShouldWorkInForeach() + { + var obj = new object(); + var se = new SingletonEnumerable<object>(obj); + int i=0; + foreach (var o in se) + { + i++; + } + Assert.That(i, Is.EqualTo(1)); + } + + [Test] + public void ShouldWorkAsEnumerator() + { + var obj = new object(); + var se = new SingletonEnumerable<object>(obj); + var enu = se.GetEnumerator(); + int i = 0; + while (enu.MoveNext()) + { + i++; + } + Assert.That(i, Is.EqualTo(1)); + } + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |