import test from 'node:test';
import assert from 'node:assert/strict';
import {stableUnique} from './stable-unique.mjs';
test('preserves first occurrence order and handles empty input',()=>{
 assert.deepEqual(stableUnique([3,1,3,2,1]),[3,1,2]);assert.deepEqual(stableUnique([]),[]);
});
test('leaves the original input unchanged and returns a new array',()=>{
 const original=Object.freeze(['a','b','a']);const result=stableUnique(original);
 assert.deepEqual(original,['a','b','a']);assert.deepEqual(result,['a','b']);assert.notEqual(result,original);
});
test('rejects non-array input',()=>{for(const input of [null,undefined,'abc',12,{}])assert.throws(()=>stableUnique(input),TypeError)});
test('documents value equality, NaN and object identity',()=>{
 const item={id:1};const other={id:1};
 assert.deepEqual(stableUnique([NaN,NaN,1,'1',item,item,other]),[NaN,1,'1',item,other]);
});
