33 lines
2.0 KiB
TypeScript
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({}));
|
|
});
|