update
This commit is contained in:
73
test/poll-available-formats.test.js
Normal file
73
test/poll-available-formats.test.js
Normal file
@@ -0,0 +1,73 @@
|
||||
'use strict';
|
||||
const assert = require('node:assert');
|
||||
const { shouldReadImage } = require('../lib/poll-guard');
|
||||
|
||||
let passed = 0;
|
||||
function check(name, fn) {
|
||||
try { fn(); console.log(' ok -', name); passed++; }
|
||||
catch (e) { console.error(' FAIL -', name, e.message); process.exitCode = 1; }
|
||||
}
|
||||
|
||||
check('纯文本时返回 false', () => {
|
||||
assert.strictEqual(shouldReadImage(['text/plain']), false);
|
||||
assert.strictEqual(shouldReadImage(['text/html']), false);
|
||||
});
|
||||
|
||||
check('空数组返回 false', () => {
|
||||
assert.strictEqual(shouldReadImage([]), false);
|
||||
});
|
||||
|
||||
check('空格式列表返回 false', () => {
|
||||
assert.strictEqual(shouldReadImage(['']), false);
|
||||
});
|
||||
|
||||
check('纯图片返回 true', () => {
|
||||
assert.strictEqual(shouldReadImage(['image/png']), true);
|
||||
assert.strictEqual(shouldReadImage(['image/bmp']), true);
|
||||
assert.strictEqual(shouldReadImage(['image/jpeg']), true);
|
||||
});
|
||||
|
||||
check('文本+图片混合返回 true', () => {
|
||||
assert.strictEqual(shouldReadImage(['text/plain', 'image/png']), true);
|
||||
});
|
||||
|
||||
check('非数组容错', () => {
|
||||
assert.strictEqual(shouldReadImage(null), false);
|
||||
assert.strictEqual(shouldReadImage(undefined), false);
|
||||
assert.strictEqual(shouldReadImage('image/png'), false);
|
||||
});
|
||||
|
||||
check('非字符串元素容错', () => {
|
||||
assert.strictEqual(shouldReadImage([null, 'image/png']), true);
|
||||
assert.strictEqual(shouldReadImage([42, 'text/plain']), false);
|
||||
});
|
||||
|
||||
check('只匹配 image/ 开头,不被 text/image 之类误判', () => {
|
||||
assert.strictEqual(shouldReadImage(['text/image']), false);
|
||||
});
|
||||
|
||||
// ---------- 主进程接入回归 ----------
|
||||
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const mainSrc = fs.readFileSync(path.join(__dirname, '..', 'main.js'), 'utf8');
|
||||
|
||||
check('main.js 已 require poll-guard', () => {
|
||||
assert.ok(
|
||||
/require\(\s*'\.\/lib\/poll-guard'\s*\)/.test(mainSrc),
|
||||
'main.js 没 require poll-guard'
|
||||
);
|
||||
});
|
||||
|
||||
check('pollClipboard 在 readImage 前调用了 shouldReadImage', () => {
|
||||
// 抓出 pollClipboard 整个函数体
|
||||
const fn = mainSrc.match(/function pollClipboard[\s\S]*?\n\}/);
|
||||
assert.ok(fn, '找不到 pollClipboard');
|
||||
const idxGuard = fn[0].indexOf('shouldReadImage');
|
||||
const idxRead = fn[0].indexOf('readImage');
|
||||
assert.ok(idxGuard > 0, 'pollClipboard 没调用 shouldReadImage');
|
||||
assert.ok(idxRead > 0, 'pollClipboard 没调用 readImage');
|
||||
assert.ok(idxGuard < idxRead, 'shouldReadImage 必须在 readImage 之前出现');
|
||||
});
|
||||
|
||||
console.log(`\n${passed} checks passed`);
|
||||
Reference in New Issue
Block a user