v1.3.0
New Features
Collection Assertions
ContainsInOrder(seq)- validates elements appear in order (gaps allowed)ContainsInConsecutiveOrder(seq)- validates elements appear consecutively (no gaps)IsSubsetOf(superset)- validates collection is a subsetIsSupersetOf(subset)- validates collection is a supersetIntersects(other)- validates collections share at least one elementSatisfies(p1, p2, ...)- validates elements satisfy predicates with unique 1:1 matching (bipartite matching)
Proximity Assertions
BeCloseTo(target, tolerance)- validates numeric values within toleranceBeApproximately(target, tolerance)- alias for BeCloseToBeCloseTo(expected, TimeSpan)- validates DateTime/DateTimeOffset within tolerance
IsEquivalentTo Enhancements
- Full feature parity with FluentAssertions configuration options
Usage
using SharpAssert.Features.Collections;
using SharpAssert.Features.Proximity;
// Collection assertions
Assert(coll.ContainsInOrder(1, 3, 5));
Assert(coll.ContainsInConsecutiveOrder(2, 3, 4));
Assert(coll.IsSubsetOf(superset));
Assert(coll.IsSupersetOf(subset));
Assert(coll.Intersects(other));
Assert(users.Satisfies(u => u.Age > 18, u => u.IsAdmin));
// Proximity assertions
Assert(value.BeCloseTo(target, 0.01));
Assert(value.BeApproximately(pi, 0.001));
Assert(dt.BeCloseTo(expected, TimeSpan.FromMilliseconds(100)));Full Changelog: v1.2.0...v1.3.0