Reputation: 32162
I have the following spec
BidirectionalGraph Fixture = new BidirectionalGraph();
public void VerticesShouldBeAbleToAssociateMultipleEdges()
{
int a = 0;
int b = 1;
int c = 2;
Fixture.AddEdge(a, b);
Fixture.AddEdge(b, c);
Fixture.AddEdge(c, a);
Fixture.EdgesFrom(a).Should().BeEquivalentTo
( new []{a, b}
, new []{a, c});
}
where EdgesFrom is defined so
public IEnumerable<int[]> EdgesFrom(int vertex)
however my test fails with
Result Message: Expected collection
{{0, 1}, {0, 2}} to be equivalent to
{{0, 1}, {0, 2}}.
Which doesn't quite makes sense to me as they are obviously equivalent.
Does FluentAssertions
just not work when comparing collections
of collections?
Upvotes: 6
Views: 2573
Reputation: 8889
That's because collection.Should().BeEquivalentTo() uses the default Equals() implementation of your type to make sure each item in the first collection appears somewhere in the 2nd collection. What you really need is new equivalency feature that I introduced in Fluent Assertions 2.0. Unfortunately I only recently became aware of confusing syntax (collection.Should().BeEquivalentTo() versus ShouldAllBeEquivalentTo()).
Upvotes: 3