diff options
Diffstat (limited to 'deno_testing')
-rw-r--r-- | deno_testing/testing.ts | 96 | ||||
-rw-r--r-- | deno_testing/util.ts | 60 | ||||
-rw-r--r-- | deno_testing/util_test.ts | 32 |
3 files changed, 0 insertions, 188 deletions
diff --git a/deno_testing/testing.ts b/deno_testing/testing.ts deleted file mode 100644 index 969c15704..000000000 --- a/deno_testing/testing.ts +++ /dev/null @@ -1,96 +0,0 @@ -/*! - Copyright 2018 Propel http://propel.site/. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -export { assert, assertEqual, equal } from "./util"; - -export type TestFunction = () => void | Promise<void>; - -export interface TestDefinition { - fn: TestFunction; - name: string; -} - -export const exitOnFail = true; - -/* A subset of the tests can be ran by providing a filter expression. - * In Node.js the filter is specified on the command line: - * - * ts-node test_node log # all tests with 'log' in the name - * ts-node test_node ^util # tests starting with 'util' - * - * In the browser, the filter is specified as part of the url: - * - * http://localhost:9876/test.html#script=some/script.js&filter=log - * http://localhost:9876/test.html#script=some/script.js&filter=^util - */ -let filterExpr: string = null; - -const filterRegExp = filterExpr ? new RegExp(filterExpr, "i") : null; -const tests: TestDefinition[] = []; - -export function test(t: TestDefinition | TestFunction): void { - const fn: TestFunction = typeof t === "function" ? t : t.fn; - const name: string = t.name; - - if (!name) { - throw new Error("Test function may not be anonymous"); - } - if (filter(name)) { - tests.push({ fn, name }); - } -} - -function filter(name: string): boolean { - if (filterRegExp) { - return filterRegExp.test(name); - } else { - return true; - } -} - -async function runTests() { - let passed = 0; - let failed = 0; - - for (let i = 0; i < tests.length; i++) { - const { fn, name } = tests[i]; - console.log(`${i+1}/${tests.length} +${passed} -${failed}: ${name}`); - try { - await fn(); - passed++; - } catch (e) { - console.error("\nTest FAIL", name); - console.error((e && e.stack) || e); - failed++; - if (exitOnFail) { - break; - } - } - } - - console.log(`\nDONE. Test passed: ${passed}, failed: ${failed}`); - - if (failed === 0) { - // All good. - } else { - // Use setTimeout to avoid the error being ignored due to unhandled - // promise rejections being swallowed. - setTimeout(() => { - throw new Error(`There were ${failed} test failures.`); - }, 0); - } -} - -setTimeout(runTests, 0); diff --git a/deno_testing/util.ts b/deno_testing/util.ts deleted file mode 100644 index 509713005..000000000 --- a/deno_testing/util.ts +++ /dev/null @@ -1,60 +0,0 @@ -/*! - Copyright 2018 Propel http://propel.site/. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -// tslint:disable-next-line:no-any -export function assertEqual(actual: any, expected: any, msg?: string) { - if (!msg) { msg = `actual: ${actual} expected: ${expected}`; } - if (!equal(actual, expected)) { - console.error( - "assertEqual failed. actual = ", actual, "expected =", expected); - throw new Error(msg); - } -} - -export function assert(expr: boolean, msg = "") { - if (!expr) { - throw new Error(msg); - } -} - -// tslint:disable-next-line:no-any -export function equal(c: any, d: any): boolean { - const seen = new Map(); - return (function compare(a, b) { - if (a === b) { - return true; - } - if (typeof a === "number" && typeof b === "number" && - isNaN(a) && isNaN(b)) { - return true; - } - if (a && typeof a === "object" && b && typeof b === "object") { - if (seen.get(a) === b) { - return true; - } - if (Object.keys(a).length !== Object.keys(b).length) { - return false; - } - for (const key in { ...a, ...b }) { - if (!compare(a[key], b[key])) { - return false; - } - } - seen.set(a, b); - return true; - } - return false; - })(c, d); -} diff --git a/deno_testing/util_test.ts b/deno_testing/util_test.ts deleted file mode 100644 index 44f61f9c4..000000000 --- a/deno_testing/util_test.ts +++ /dev/null @@ -1,32 +0,0 @@ -/*! - Copyright 2018 Propel http://propel.site/. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -import { test } from "./index"; -import { assert } from "./util"; -import * as util from "./util"; - -test(async function util_equal() { - assert(util.equal("world", "world")); - assert(!util.equal("hello", "world")); - assert(util.equal(5, 5)); - assert(!util.equal(5, 6)); - assert(util.equal(NaN, NaN)); - assert(util.equal({ hello: "world" }, { hello: "world" })); - assert(!util.equal({ world: "hello" }, { hello: "world" })); - assert(util.equal({ hello: "world", hi: { there: "everyone" } }, - { hello: "world", hi: { there: "everyone" } })); - assert(!util.equal({ hello: "world", hi: { there: "everyone" } }, - { hello: "world", hi: { there: "everyone else" } })); -}); |