lovelacejs/tests/index.ts
2022-06-22 23:04:55 -05:00

46 lines
1.4 KiB
TypeScript

// import ProgressBar from 'progress'
import tableTests from './core/tableTests.js'
import noduleTests from './core/NoduleTests.js'
import filterNoduleTests from './core/nodules/filterNoduleTests.js'
import joinNoduleTests from './core/nodules/joinNoduleTests.js'
import transformNoduleTests from './core/nodules/transformNoduleTests.js'
import groupByNoduleTests from './core/nodules/groupByNoduleTests.js'
import sortNoduleTests from './core/nodules/sortNoduleTests.js'
type unitTest = { name: string, test: Function }
function runTestsAndReturnFailures (tests: unitTest[]): string[] {
const testTotalCount = tests.length
const testsFailed: string[] = []
for (let i = 0; i < testTotalCount; i++) {
const passedTest = tests[i].test()
if (!passedTest) testsFailed.push(tests[i].name)
}
return testsFailed
}
function init (tests: unitTest[]) {
const failedTestsResults = runTestsAndReturnFailures(tests)
if (failedTestsResults.length === 0) {
console.log('\x1b[32m%s\x1b[0m', 'All Tests Passed!!')
} else {
console.log(`\x1b[31mFailed ${failedTestsResults.length} tests.\x1b[0m`)
failedTestsResults.forEach(test => {
console.log(`\x1b[33m${test}\x1b[0m`)
})
}
}
const testsArray = [
tableTests,
noduleTests,
filterNoduleTests,
joinNoduleTests,
transformNoduleTests,
groupByNoduleTests,
sortNoduleTests,
]
init (testsArray.flat())