Files

33 lines
2.0 KiB
TypeScript

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({}));
});