← Back to team overview

nunit-core team mailing list archive

[Bug 1051847] Re: self contained item in array causes stack overflow

 

Hello Christian, let me expand. There's one single way of comparing objects in NUnit, let's call it NUnit equality. 
The qay it works is this: If the identity of the two objects being compared is the same (Object.ReferenceEquals) then the objects are equal, otherwise other mechanisms for comparing them take place. 
With this I mean that what Contains does is check each element of the collection for NUnit equality with the expected item.

Are you suggesting that Contains should check only identity equality?

-- 
You received this bug notification because you are a member of NUnit
Developers, which is subscribed to NUnit V2.
https://bugs.launchpad.net/bugs/1051847

Title:
  self contained item in array causes stack overflow

Status in NUnit V2 Test Framework:
  Confirmed

Bug description:
  using System.Collections;
  using System.Collections.Generic;
  using NUnit.Framework;

  [TestFixture]
  public class Reproduction {
  	class SelfContainer : IEnumerable { public IEnumerator GetEnumerator() { yield return this; } }

  	[Test]
  	public void SelfContainedItemFoundInArray() {
  		var item = new SelfContainer();
  		var items = new SelfContainer[] { new SelfContainer(), item };

  		// work around
  		Assert.True(((ICollection<SelfContainer>)items).Contains(item));

  		// causes StackOverflowException
  		Assert.Contains(item, items);
  	}
  }

  Reproduced in NUnit 2.6.1

  See also bug #491300

To manage notifications about this bug go to:
https://bugs.launchpad.net/nunitv2/+bug/1051847/+subscriptions


References