feat: define simulator data contracts
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
const registeredTests = [];
|
||||
|
||||
globalThis.test = (name, callback) => registeredTests.push({ name, callback });
|
||||
globalThis.assert = (condition, message = "assertion failed") => {
|
||||
if (!condition) throw new Error(message);
|
||||
};
|
||||
globalThis.assertEqual = (actual, expected, message = "values differ") => {
|
||||
if (!Object.is(actual, expected)) throw new Error(`${message}: expected ${expected}, received ${actual}`);
|
||||
};
|
||||
|
||||
await import("/tests/unit/contracts.test.js");
|
||||
|
||||
const resultList = document.querySelector("#test-results");
|
||||
const summary = document.querySelector("#test-summary");
|
||||
let passed = 0;
|
||||
|
||||
for (const registeredTest of registeredTests) {
|
||||
const item = document.createElement("li");
|
||||
item.className = "test-result";
|
||||
try {
|
||||
await registeredTest.callback();
|
||||
passed += 1;
|
||||
item.classList.add("test-result--pass");
|
||||
item.textContent = `✓ ${registeredTest.name}`;
|
||||
} catch (error) {
|
||||
item.classList.add("test-result--fail");
|
||||
const title = document.createElement("strong");
|
||||
title.textContent = `✕ ${registeredTest.name}`;
|
||||
const details = document.createElement("pre");
|
||||
details.textContent = error instanceof Error ? error.stack : String(error);
|
||||
item.append(title, details);
|
||||
}
|
||||
resultList.append(item);
|
||||
}
|
||||
|
||||
const failed = registeredTests.length - passed;
|
||||
summary.textContent = `${registeredTests.length}개 중 ${passed}개 통과, ${failed}개 실패`;
|
||||
summary.dataset.failed = String(failed);
|
||||
document.documentElement.dataset.testStatus = failed === 0 ? "pass" : "fail";
|
||||
document.title = failed === 0 ? "PASS · micarrsim tests" : "FAIL · micarrsim tests";
|
||||
Reference in New Issue
Block a user