19 lines
1.2 KiB
JavaScript
19 lines
1.2 KiB
JavaScript
const fs = require('fs'), ts = require('typescript'), assert = require('node:assert/strict');
|
|
const code = ts.transpileModule(fs.readFileSync('assets/home_popup_queue/HomePopupQueue.ts', 'utf8'), {
|
|
compilerOptions: { target: ts.ScriptTarget.ES2017, module: ts.ModuleKind.CommonJS, experimentalDecorators: true }
|
|
}).outputText;
|
|
const cc = { Component: class {}, _decorator: { ccclass: c => c }, isValid: () => true, error: e => { throw e; } };
|
|
const out = {};
|
|
new Function('exports', 'cc', code)(out, cc);
|
|
for (const host of [null, {}, { isPopupActive: () => false }, { isPopupActive: () => true }]) {
|
|
const queue = new out.default();
|
|
queue.node = { getComponent: name => name === 'CoinMadnessHost' ? host : null, getChildByName: () => null };
|
|
let ran = 0;
|
|
queue.enqueue('automatic', 10, done => { ran++; done(); });
|
|
queue.update();
|
|
const blocked = !!host && typeof host.isPopupActive === 'function' && host.isPopupActive();
|
|
assert.equal(ran, blocked ? 0 : 1);
|
|
if (blocked) { host.isPopupActive = () => false; queue.update(); assert.equal(ran, 1); }
|
|
}
|
|
console.log('PASS: missing/legacy host never throws; active manual panel blocks automatic popups until closed.');
|