import assert from "node:assert/strict"; import { describe, it } from "node:test"; import * as ss from "../index.js"; describe("combinations", function () { it("generates 1 permutation", function () { assert.deepEqual(ss.combinationsReplacement(Object.freeze([1]), 1), [ [1] ]); }); it("generates combinations of 1,2 choosing two at a time, with replacement", function () { assert.deepEqual(ss.combinationsReplacement(Object.freeze([1, 2]), 2), [ [1, 1], [1, 2], [2, 2] ]); }); it("returns no combinations when choosing zero at a time", function () { assert.deepEqual( ss.combinationsReplacement(Object.freeze([1, 2, 3]), 0), [] ); }); it("returns no combinations for a negative group size", function () { assert.deepEqual( ss.combinationsReplacement(Object.freeze([1, 2, 3]), -1), [] ); }); it("agrees with combinations on non-positive group sizes", function () { const x = Object.freeze([1, 2, 3]); assert.deepEqual( ss.combinationsReplacement(x, 0), ss.combinations(x, 0) ); assert.deepEqual( ss.combinationsReplacement(x, -1), ss.combinations(x, -1) ); }); });