Asserts that the target has the same members as the expected value, regardless of order. Uses strict equality (===) for comparison. Both the target and expected values must conform to ArrayLikeOrSizedIterable but can be different concrete types.
Note on NaN: Since this function uses strict equality (===), NaN values will NOT match other NaN values (because NaN !== NaN in JavaScript). If you need NaN values to be considered equal, use sameDeepMembersFunc which uses deep equality comparison.
The assert scope.
The expected collection to compare against (must be an ArrayLikeOrSizedIterable).
OptionalevalMsg: MsgSource
The message to display if the assertion fails.
import { assert } from "@nevware21/tripwire";
assert([1, 2, 3]).has.include.sameMembers([3, 2, 1]); // Passes - same members, different order
assert([1, 2, 2, 3]).has.include.sameMembers([3, 2, 2, 1]); // Passes - duplicates handled
assert([1, 2, 3]).has.include.sameMembers([1, 2]); // Fails - different length
assert([1, 2, 3]).has.include.sameMembers([1, 2, 4]); // Fails - different members
assert(new Set([1, 2, 3])).has.include.sameMembers(new Set([3, 2, 1])); // Passes - different types
// NaN behavior with strict equality
assert([NaN, 0]).has.include.sameMembers([0, NaN]); // Fails - NaN !== NaN
assert([NaN, 0]).has.include.sameDeepMembers([0, NaN]); // Passes - deep equality handles NaN
Export assertion functions