summaryrefslogtreecommitdiff
path: root/js/testing
diff options
context:
space:
mode:
Diffstat (limited to 'js/testing')
-rw-r--r--js/testing/testing.ts62
-rw-r--r--js/testing/testing_test.ts (renamed from js/testing/util_test.ts)36
-rw-r--r--js/testing/util.ts74
3 files changed, 78 insertions, 94 deletions
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<void>;
diff --git a/js/testing/util_test.ts b/js/testing/testing_test.ts
index 25f0b2c45..9b32884eb 100644
--- a/js/testing/util_test.ts
+++ b/js/testing/testing_test.ts
@@ -13,43 +13,41 @@
limitations under the License.
*/
-import { test } from "./testing.ts";
-import { assert } from "./util.ts";
-import * as util from "./util.ts";
+import { test, assert, assertEqual, equal } from "./testing.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" }));
+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(
- util.equal(
+ equal(
{ hello: "world", hi: { there: "everyone" } },
{ hello: "world", hi: { there: "everyone" } }
)
);
assert(
- !util.equal(
+ !equal(
{ hello: "world", hi: { there: "everyone" } },
{ hello: "world", hi: { there: "everyone else" } }
)
);
});
-test(function util_assertEqual() {
+test(function testingAssertEqual() {
const a = Object.create(null);
a.b = "foo";
- util.assertEqual(a, a);
+ assertEqual(a, a);
});
-test(function util_assertEqualActualUncoercable() {
+test(function testingAssertEqualActualUncoercable() {
let didThrow = false;
const a = Object.create(null);
try {
- util.assertEqual(a, "bar");
+ assertEqual(a, "bar");
} catch (e) {
didThrow = true;
console.log(e.message);
@@ -58,11 +56,11 @@ test(function util_assertEqualActualUncoercable() {
assert(didThrow);
});
-test(function util_assertEqualExpectedUncoercable() {
+test(function testingAssertEqualExpectedUncoercable() {
let didThrow = false;
const a = Object.create(null);
try {
- util.assertEqual("bar", a);
+ assertEqual("bar", a);
} catch (e) {
didThrow = true;
console.log(e.message);
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);
-}