20 lines
1.3 KiB
TypeScript
20 lines
1.3 KiB
TypeScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {readInviteClipboard,readClipboardText} from '../../YouleNexus/assets/framework/adapters/native/invite-clipboard.ts';
|
|
test('invite paste keeps native signatures and strips non-digits without truncating',async()=>{
|
|
const calls:unknown[]=[];
|
|
assert.equal(await readInviteClipboard({kind:'settings',read:(...args:unknown[])=>{calls.push(args);return '码00 1234567';}}),'001234567');
|
|
assert.deepEqual(calls,[[]]);
|
|
assert.equal(await readInviteClipboard({kind:'bridge',call:(name,data,cb)=>{assert.equal(name,'gamepastetext');assert.equal(data,'');cb('00-12');}}),'0012');
|
|
assert.equal(await readInviteClipboard({kind:'browser',read:async()=>'A123'}),'123');
|
|
await assert.rejects(readInviteClipboard({kind:'settings',read:()=>null}),/clipboard/);
|
|
});
|
|
|
|
test('redemption paste preserves letters, punctuation, whitespace and leading zeroes',async()=>{
|
|
for(const text of ['00Ab-12',' aB ','']){
|
|
assert.equal(await readClipboardText({kind:'settings',read:()=>text}),text);
|
|
assert.equal(await readClipboardText({kind:'bridge',call:(name,data,cb)=>{assert.equal(name,'gamepastetext');assert.equal(data,'');cb(text);}}),text);
|
|
assert.equal(await readClipboardText({kind:'browser',read:async()=>text}),text);
|
|
}
|
|
});
|