Skip to content

v1.3.0

Choose a tag to compare

@yevhen yevhen released this 16 Dec 15:31

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 subset
  • IsSupersetOf(subset) - validates collection is a superset
  • Intersects(other) - validates collections share at least one element
  • Satisfies(p1, p2, ...) - validates elements satisfy predicates with unique 1:1 matching (bipartite matching)

Proximity Assertions

  • BeCloseTo(target, tolerance) - validates numeric values within tolerance
  • BeApproximately(target, tolerance) - alias for BeCloseTo
  • BeCloseTo(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