From 6cc998f28bb1cf119ca96bac385c7361bc1f7021 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 23 Dec 2018 11:44:08 -0500 Subject: Remove support for extensionless import (#1396) --- js/testing/testing.ts | 62 +++++++++++++++++++++++++++++++++++++- js/testing/testing_test.ts | 70 +++++++++++++++++++++++++++++++++++++++++++ js/testing/util.ts | 74 ---------------------------------------------- js/testing/util_test.ts | 72 -------------------------------------------- 4 files changed, 131 insertions(+), 147 deletions(-) create mode 100644 js/testing/testing_test.ts delete mode 100644 js/testing/util.ts delete mode 100644 js/testing/util_test.ts (limited to 'js/testing') diff --git a/js/testing/testing.ts b/js/testing/testing.ts index 437cb0f38..4cf7ea27f 100644 --- a/js/testing/testing.ts +++ b/js/testing/testing.ts @@ -13,7 +13,67 @@ limitations under the License. */ -export { assert, assertEqual, equal } from "./util"; +// Do not add imports in this file in order to be compatible with Node. + +export function assertEqual(actual: unknown, expected: unknown, msg?: string) { + if (!equal(actual, expected)) { + let actualString: string; + let expectedString: string; + try { + actualString = String(actual); + } catch (e) { + actualString = "[Cannot display]"; + } + try { + expectedString = String(expected); + } catch (e) { + expectedString = "[Cannot display]"; + } + console.error( + "assertEqual failed. actual =", + actualString, + "expected =", + expectedString + ); + if (!msg) { + msg = `actual: ${actualString} expected: ${expectedString}`; + } + throw new Error(msg); + } +} + +export function assert(expr: boolean, msg = "") { + if (!expr) { + throw new Error(msg); + } +} + +// TODO(ry) Use unknown here for parameters types. +// tslint:disable-next-line:no-any +export function equal(c: any, d: any): boolean { + const seen = new Map(); + return (function compare(a, b) { + if (Object.is(a, 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); +} export type TestFunction = () => void | Promise; diff --git a/js/testing/testing_test.ts b/js/testing/testing_test.ts new file mode 100644 index 000000000..9b32884eb --- /dev/null +++ b/js/testing/testing_test.ts @@ -0,0 +1,70 @@ +/*! + 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, assert, assertEqual, equal } from "./testing.ts"; + +test(function testingEqual() { + assert(equal("world", "world")); + assert(!equal("hello", "world")); + assert(equal(5, 5)); + assert(!equal(5, 6)); + assert(equal(NaN, NaN)); + assert(equal({ hello: "world" }, { hello: "world" })); + assert(!equal({ world: "hello" }, { hello: "world" })); + assert( + equal( + { hello: "world", hi: { there: "everyone" } }, + { hello: "world", hi: { there: "everyone" } } + ) + ); + assert( + !equal( + { hello: "world", hi: { there: "everyone" } }, + { hello: "world", hi: { there: "everyone else" } } + ) + ); +}); + +test(function testingAssertEqual() { + const a = Object.create(null); + a.b = "foo"; + assertEqual(a, a); +}); + +test(function testingAssertEqualActualUncoercable() { + let didThrow = false; + const a = Object.create(null); + try { + assertEqual(a, "bar"); + } catch (e) { + didThrow = true; + console.log(e.message); + assert(e.message === "actual: [Cannot display] expected: bar"); + } + assert(didThrow); +}); + +test(function testingAssertEqualExpectedUncoercable() { + let didThrow = false; + const a = Object.create(null); + try { + assertEqual("bar", a); + } catch (e) { + didThrow = true; + console.log(e.message); + assert(e.message === "actual: bar expected: [Cannot display]"); + } + assert(didThrow); +}); diff --git a/js/testing/util.ts b/js/testing/util.ts deleted file mode 100644 index 096b184b8..000000000 --- a/js/testing/util.ts +++ /dev/null @@ -1,74 +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 function assertEqual(actual: unknown, expected: unknown, msg?: string) { - if (!equal(actual, expected)) { - let actualString: string; - let expectedString: string; - try { - actualString = String(actual); - } catch (e) { - actualString = "[Cannot display]"; - } - try { - expectedString = String(expected); - } catch (e) { - expectedString = "[Cannot display]"; - } - console.error( - "assertEqual failed. actual =", - actualString, - "expected =", - expectedString - ); - if (!msg) { - msg = `actual: ${actualString} expected: ${expectedString}`; - } - throw new Error(msg); - } -} - -export function assert(expr: boolean, msg = "") { - if (!expr) { - throw new Error(msg); - } -} - -// TODO(ry) Use unknown here for parameters types. -// tslint:disable-next-line:no-any -export function equal(c: any, d: any): boolean { - const seen = new Map(); - return (function compare(a, b) { - if (Object.is(a, 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/js/testing/util_test.ts b/js/testing/util_test.ts deleted file mode 100644 index 25f0b2c45..000000000 --- a/js/testing/util_test.ts +++ /dev/null @@ -1,72 +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 "./testing.ts"; -import { assert } from "./util.ts"; -import * as util from "./util.ts"; - -test(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" } } - ) - ); -}); - -test(function util_assertEqual() { - const a = Object.create(null); - a.b = "foo"; - util.assertEqual(a, a); -}); - -test(function util_assertEqualActualUncoercable() { - let didThrow = false; - const a = Object.create(null); - try { - util.assertEqual(a, "bar"); - } catch (e) { - didThrow = true; - console.log(e.message); - assert(e.message === "actual: [Cannot display] expected: bar"); - } - assert(didThrow); -}); - -test(function util_assertEqualExpectedUncoercable() { - let didThrow = false; - const a = Object.create(null); - try { - util.assertEqual("bar", a); - } catch (e) { - didThrow = true; - console.log(e.message); - assert(e.message === "actual: bar expected: [Cannot display]"); - } - assert(didThrow); -}); -- cgit v1.2.3