訂判斷及所需輸入
假設包只有 logo.png,卻參考 Logo.png。目標明訂分大小寫,故找不到;先忽略大小寫查會誤報成功。此處只對參考,不重命名或覆蓋解包目標。
| 情況 | 輸入 JSON |
|---|---|
| 原例測試 | {"caseSensitive":true,"reference":"Logo.png","entries":{"logo.png":"synthetic-bytes"}} |
跑所附比較
可執行虛擬集合保原名稱,不掃工作站,也不推所有檔案系統的大小寫行為。
| 路徑 | 輸出 JSON |
|---|---|
| 錯誤路徑 | {"found":true,"matched":"logo.png"} |
| 所需路徑 | {"found":false,"matched":null} |
import assert from 'node:assert/strict';
const run=function run(i,corrected=true){
if(typeof i.caseSensitive!=='boolean')return {held:true};
const names=Object.keys(i.entries);const matched=names.find(name=>corrected&&i.caseSensitive?name===i.reference:name.toLowerCase()===i.reference.toLowerCase())??null;
return {found:matched!==null,matched};
};
const cases=[{"input":{"caseSensitive":true,"reference":"Logo.png","entries":{"logo.png":"synthetic-bytes"}},"corrected":false,"expected":{"found":true,"matched":"logo.png"}},{"input":{"caseSensitive":true,"reference":"Logo.png","entries":{"logo.png":"synthetic-bytes"}},"corrected":true,"expected":{"found":false,"matched":null}},{"input":{"caseSensitive":true,"reference":"logo.png","entries":{"logo.png":"synthetic-bytes"}},"corrected":true,"expected":{"found":true,"matched":"logo.png"}},{"input":{"caseSensitive":null,"reference":"Logo.png","entries":{"logo.png":"synthetic-bytes"}},"corrected":true,"expected":{"held":true}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
按邊界依據作判斷
完全相同小寫名稱可過;目標行為未知,先停相容判斷。
- 核目標查找行為
- 對包內參考
- 記欠缺的確切名稱
不能用虛擬集合推主機行為。
| 條件 | 輸入 JSON | 預期輸出 JSON |
|---|---|---|
| 大小寫完全相同 | {"caseSensitive":true,"reference":"logo.png","entries":{"logo.png":"synthetic-bytes"}} | {"found":true,"matched":"logo.png"} |
| 目標查找規則未知 | {"caseSensitive":null,"reference":"Logo.png","entries":{"logo.png":"synthetic-bytes"}} | {"held":true} |
原例忽略大小寫找得到,就可通過嗎?
查看參考答案
不可。目標要完全同大小寫,Logo.png 欠缺;須改參考或提供該確切項目。