templating (ryuji) done
This commit is contained in:
40
endosulfan.ts
Normal file
40
endosulfan.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
export let total_tests: number = 0;
|
||||
export let failed_tests: number = 0;
|
||||
export let passed_tests: number = 0;
|
||||
|
||||
export function test_assert(condition: boolean, test_name: string): boolean {
|
||||
total_tests++;
|
||||
if (condition) {
|
||||
passed_tests++;
|
||||
console.log(`\x1B[32mTEST PASS\x1B[m ${test_name}`);
|
||||
return true;
|
||||
} else {
|
||||
failed_tests++;
|
||||
console.log(`\x1B[31mTEST FAIL\x1B[m ${test_name}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//items will probably be strings or numbers,
|
||||
//but any object that is comparable after a JSON.stringify() should be fine
|
||||
export function test_assert_equal(first_item: any, second_item: any, test_name: string, silent: boolean=false) {
|
||||
if (typeof first_item !== typeof second_item) {
|
||||
throw Error("Cannot compare two items of different types!");
|
||||
}
|
||||
//if the items are objects (including arrays)
|
||||
if (typeof first_item === "object") {
|
||||
first_item = JSON.stringify(first_item);
|
||||
second_item = JSON.stringify(second_item);
|
||||
}
|
||||
let passed = test_assert(first_item === second_item, test_name);
|
||||
if (!silent && !passed) {
|
||||
//log info for debugging purposes
|
||||
//log both items
|
||||
console.log(`${test_name}:\n========\n${first_item}\n========\n${second_item}\n========`);
|
||||
}
|
||||
}
|
||||
|
||||
export function log_test_results() {
|
||||
console.log(`Total Passed: \x1B[32m${passed_tests}/${total_tests}\x1B[m\nTotal Failed: \x1B[31m${failed_tests}/${total_tests}\x1B[m`);
|
||||
}
|
||||
Reference in New Issue
Block a user