Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 264
Kaito Kid Avatar asked Mar 08 '23 09:03

Kaito Kid


1 Answers

You're not far off:

list1.Should().BeEquivalentTo(list2);

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

like image 171
user1777136 Avatar answered Apr 09 '23 06:04

user1777136