Skip to content

Sets

ReadOnlySetAssertions<TSet, T> is available for IReadOnlySet<T> and HashSet<T> via .Should(). It extends EnumerableAssertions<TEnumerable, T>, so all enumerable assertions are available too.

Set Comparison

Comparisons use set semantics — order and duplicates are ignored, and membership is judged by the set's own comparer:

var set = new HashSet<int> { 1, 2, 3 };

set.Should().SetEquals(3, 2, 1);
set.Should().IsSupersetOf(1, 2);
set.Should().IsSubsetOf(1, 2, 3, 4);

See SetEquals, IsSupersetOf and IsSubsetOf.

Chaining

Chainable methods return a ReadOnlySetAssertionsChain<TSet, T>:

set.Should()
    .IsSupersetOf(1, 2)
    .And.IsSubsetOf(1, 2, 3, 4);

All object-level assertions are also available:

HashSet<int>? maybeNull = GetSet();
maybeNull.Should().NotBeNull().And.SetEquals(1, 2, 3);