'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`);