import {test} from 'node:test'; import assert from 'node:assert/strict'; import {JoinRoomInput} from '../../YouleNexus/assets/framework/presentation/join-room-input.ts'; import {TemplateRoomRules} from '../../YouleNexus/assets/games/template/template-room-rules.ts'; test('keypad preserves display zeros and submits a number at six digits',()=>{ const sent:number[]=[];const input=new JoinRoomInput(code=>sent.push(code)); for(const digit of [0,1,2,3,4])input.digit(digit); assert.deepEqual(sent,[]);input.digit(5); assert.equal(input.code,'012345');assert.deepEqual(sent,[12345]); input.setBusy(true);input.digit(6);input.remove();input.clear();input.confirm(); assert.equal(input.code,'012345');assert.deepEqual(sent,[12345]); input.setBusy(false);input.remove();assert.equal(input.code,'01234'); input.clear();input.confirm();assert.deepEqual(sent,[12345]); input.digit(8);input.confirm();assert.deepEqual(sent,[12345,8]); }); test('paste strips non-digits, truncates and submits; prefill does not submit',()=>{ const sent:number[]=[];const input=new JoinRoomInput(code=>sent.push(code)); input.prefill('123456');assert.deepEqual(sent,[]); input.paste('房号:987-654321');assert.equal(input.code,'987654');assert.deepEqual(sent,[987654]); input.paste('12a');assert.equal(input.code,'12');assert.equal(sent.length,1); assert.throws(()=>input.digit(10));assert.throws(()=>input.prefill('corrupt')); }); test('template options do not rewrite source fixed sample; each submission is independent',()=>{ const rules=new TemplateRoomRules();const expected=[1,4,1,2,2,[1,1,[1,2000,10],null,null,1],[1,0,5]]; assert.deepEqual(rules.build(),expected);rules.select(0,1);rules.select(1,1); assert.deepEqual(rules.build(),expected);const packet=rules.build();packet[0]=999; assert.deepEqual(rules.build(),expected);assert.throws(()=>rules.select(0,2)); // Original saved array's index 1 is 4: no corresponding Type_2 checkmark. rules.open(expected);assert.deepEqual(rules.selection,[0,3]); assert.equal(rules.seatCount(expected),10);assert.throws(()=>rules.open({})); });