import { test } from 'node:test'; import assert from 'node:assert/strict'; import { nextSpeakerSet, sameSet } from './speakerSet'; test('sameSet: identity, size and membership', () => { const a = new Set(['@a:x', '@b:x']); assert.equal(sameSet(a, a), true); assert.equal(sameSet(a, new Set(['@b:x', '@a:x'])), true); assert.equal(sameSet(a, new Set(['@a:x'])), false); assert.equal(sameSet(a, new Set(['@a:x', '@c:x'])), false); }); test('nextSpeakerSet returns the SAME reference when speakers are unchanged (#32)', () => { const prev = new Set(['@a:x']); const next = nextSpeakerSet(prev, [ { userId: '@a:x', speaking: true }, { userId: '@b:x', speaking: false }, ]); assert.equal(next, prev); }); test('nextSpeakerSet returns a new set when speakers change, ignoring non-user ids', () => { const prev = new Set(['@a:x']); const next = nextSpeakerSet(prev, [ { userId: '@a:x', speaking: false }, { userId: '@b:x', speaking: true }, { userId: 'not-a-user-id', speaking: true }, ]); assert.notEqual(next, prev); assert.deepEqual(Array.from(next), ['@b:x']); });