Files
geek-calc/tests/test-harness.js
snowprint 54f427ea21
Some checks failed
Deploy to GitHub Pages / build-and-deploy (push) Has been cancelled
init geek calc
2025-10-04 10:53:41 +08:00

1 line
1.7 KiB
JavaScript

let tests=[];let passedTests=0;let failedTests=0;function addTest(name,testFunction){tests.push({name,testFunction})}function runTest(test){try{const result=test.testFunction();if(result&&typeof result==='object'&&result.error){return{name:test.name,passed:false,error:result.error}}if(result===true){return{name:test.name,passed:true}}return{name:test.name,passed:false,error:`Test returned unexpected value: ${result}`}}catch(error){return{name:test.name,passed:false,error:error.message}}}function runAllTests(){console.log(`Running ${tests.length} tests...`);const results=tests.map(test=>runTest(test));passedTests=0;failedTests=0;const resultsDiv=document.getElementById('test-results');resultsDiv.innerHTML='';results.forEach(result=>{const resultElement=document.createElement('div');resultElement.className=`test-result ${result.passed?'pass':'fail'}`;if(result.passed){resultElement.innerHTML=`${result.name}`;passedTests+=1}else{resultElement.innerHTML=`${result.name} - ${result.error}`;failedTests+=1}resultsDiv.appendChild(resultElement)});const summaryDiv=document.getElementById('summary');summaryDiv.innerHTML=`<h3>Test Summary</h3><p>Total tests: ${tests.length}</p><p class="pass">Passed: ${passedTests}</p><p class="fail">Failed: ${failedTests}</p><p>Success rate: ${tests.length?Math.round((passedTests/tests.length)*100):0}%</p>`;console.log(`Tests completed: ${passedTests} passed, ${failedTests} failed`);return{total:tests.length,passed:passedTests,failed:failedTests,successRate:tests.length?(passedTests/tests.length)*100:0}}window.addTest=addTest;window.runAllTests=runAllTests;if(typeof module!=='undefined'&&module.exports){module.exports={addTest,runAllTests}}