This is a hard one: ReturnRecursiveFakes doesn't handle override equal correctly
Here's the production code:
public class SimpleClass
{
public string ID
{
get;
set;
}
public string Node
{
get
{
throw new NotImplementedException();
}
}
public override bool Equals(object obj)
{
return ID == ((SimpleClass) obj).ID;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
public void MOreVerify(int moerVer)
{
}
}
Here's the test code:
[Test, Isolated]
public void NodeOverrideTest2()
{
List<SimpleClass> scs = new List<SimpleClass>();
for (int l = 0; l < 2; l++)
{
SimpleClass sc = Isolate.Fake.Instance<SimpleClass>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => sc.ID).WillReturn("1");
scs.Add(sc);
}
scs.Remove(scs[0]);
Assert.AreEqual(1, scs.Count);
}
And the test will fail.
BUt if I use
[Test, Isolated]
public void NodeOverrideTest2()
{
List<SimpleClass> scs = new List<SimpleClass>();
for (int l = 0; l <2> sc.ID).WillReturn("1");
scs.Add(sc);
}
scs.Remove(scs[0]);
Assert.AreEqual(1, scs.Count);
}
Then the test will pass.
I think it's because the ReturnRecursiveFakes just return a false for equals but fail to take into account that the equals should be true under certain circumstances.
________
BMW VI 5,5