Search code examples
c#unit-testingfluent-assertions

FluentAssertions: Should contain every element of sequence


I have a list, every single element should also show up in another list, but not necessarily in the same order.

I could probably do the assert with a foreach, like this

Assert.IsTrue(list1.Count == list2.Count);
foreach(var element in list1)
{
    Assert.IsTrue(list2.Count(e => e.Equals(element)) == 1);
}

I am looking for a way to do this with fluentAssertions. The elements are not necessarily Equal, but are Equivalent. It would probably be something like

list1.ShouldAll().BeEquivalentInAnyOrderTo(list2);

But I can't find anything that solves my problem that easily.

What is the simplest way to check if both lists contain equivalent elements in any order using FluentAssertions?


Solution

  • You're not far off:

    list1.Should().BeEquivalentTo(list2);
    

    should work. From: https://fluentassertions.com/collections/