1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-28 18:19:08 -05:00
denoland-deno/testing/test.ts

267 lines
5.2 KiB
TypeScript
Raw Normal View History

2019-01-01 22:46:17 -05:00
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
2019-03-06 16:39:50 -05:00
import { test, runIfMain } from "./mod.ts";
import {
assert,
assertEq,
assertStrictEq,
assertThrows,
assertThrowsAsync,
fail
} from "../testing/asserts.ts";
2019-02-15 11:11:55 -05:00
import "./format_test.ts";
import "./diff_test.ts";
import "./pretty_test.ts";
2019-03-05 14:58:28 -05:00
import "./asserts_test.ts";
2019-01-01 22:46:17 -05:00
2019-01-26 06:51:19 -05:00
test(function testingAssertFail() {
2019-03-06 16:39:50 -05:00
assertThrows(fail, Error, "Failed assertion.");
assertThrows(
2019-01-26 23:19:56 -05:00
() => {
2019-03-06 16:39:50 -05:00
fail("foo");
2019-01-26 23:19:56 -05:00
},
Error,
"Failed assertion: foo"
);
2019-01-26 06:51:19 -05:00
});
2019-01-01 22:46:17 -05:00
test(function testingAssertEqualActualUncoercable() {
let didThrow = false;
const a = Object.create(null);
try {
2019-03-06 16:39:50 -05:00
assertEq(a, "bar");
2019-01-01 22:46:17 -05:00
} catch (e) {
didThrow = true;
}
assert(didThrow);
});
test(function testingAssertEqualExpectedUncoercable() {
let didThrow = false;
const a = Object.create(null);
try {
2019-03-06 16:39:50 -05:00
assertStrictEq("bar", a);
2019-01-01 22:46:17 -05:00
} catch (e) {
didThrow = true;
}
assert(didThrow);
});
2019-01-15 21:57:40 -05:00
test(function testingAssertStrictEqual() {
const a = {};
const b = a;
2019-03-06 16:39:50 -05:00
assertStrictEq(a, b);
2019-01-15 21:57:40 -05:00
});
test(function testingAssertNotStrictEqual() {
let didThrow = false;
const a = {};
const b = {};
try {
2019-03-06 16:39:50 -05:00
assertStrictEq(a, b);
2019-01-15 21:57:40 -05:00
} catch (e) {
assert(e.message === "actual: [object Object] expected: [object Object]");
didThrow = true;
}
assert(didThrow);
});
test(function testingDoesThrow() {
let count = 0;
2019-03-06 16:39:50 -05:00
assertThrows(() => {
2019-01-15 21:57:40 -05:00
count++;
throw new Error();
});
assert(count === 1);
});
test(function testingDoesNotThrow() {
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
assertThrows(() => {
2019-01-15 21:57:40 -05:00
count++;
console.log("Hello world");
});
} catch (e) {
assert(e.message === "Expected function to throw.");
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
test(function testingThrowsErrorType() {
let count = 0;
2019-03-06 16:39:50 -05:00
assertThrows(() => {
2019-01-15 21:57:40 -05:00
count++;
throw new TypeError();
}, TypeError);
assert(count === 1);
});
test(function testingThrowsNotErrorType() {
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
assertThrows(() => {
2019-01-15 21:57:40 -05:00
count++;
throw new TypeError();
}, RangeError);
} catch (e) {
assert(e.message === `Expected error to be instance of "RangeError".`);
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
test(function testingThrowsMsgIncludes() {
let count = 0;
2019-03-06 16:39:50 -05:00
assertThrows(
2019-01-15 21:57:40 -05:00
() => {
count++;
throw new TypeError("Hello world!");
},
TypeError,
"world"
);
assert(count === 1);
});
test(function testingThrowsMsgNotIncludes() {
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
assertThrows(
2019-01-15 21:57:40 -05:00
() => {
count++;
throw new TypeError("Hello world!");
},
TypeError,
"foobar"
);
} catch (e) {
assert(
e.message ===
`Expected error message to include "foobar", but got "Hello world!".`
);
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
2019-01-22 01:15:25 -05:00
test(async function testingDoesThrowAsync() {
let count = 0;
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(async () => {
2019-01-22 01:15:25 -05:00
count++;
throw new Error();
});
assert(count === 1);
});
test(async function testingDoesReject() {
let count = 0;
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(() => {
2019-01-22 01:15:25 -05:00
count++;
return Promise.reject(new Error());
});
assert(count === 1);
});
test(async function testingDoesNotThrowAsync() {
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(async () => {
2019-01-22 01:15:25 -05:00
count++;
console.log("Hello world");
});
} catch (e) {
assert(e.message === "Expected function to throw.");
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
test(async function testingDoesNotRejectAsync() {
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(() => {
2019-01-22 01:15:25 -05:00
count++;
console.log("Hello world");
return Promise.resolve();
});
} catch (e) {
assert(e.message === "Expected function to throw.");
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
test(async function testingThrowsAsyncErrorType() {
let count = 0;
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(async () => {
2019-01-22 01:15:25 -05:00
count++;
throw new TypeError();
}, TypeError);
assert(count === 1);
});
test(async function testingThrowsAsyncNotErrorType() {
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(async () => {
2019-01-22 01:15:25 -05:00
count++;
throw new TypeError();
}, RangeError);
} catch (e) {
assert(e.message === `Expected error to be instance of "RangeError".`);
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
test(async function testingThrowsAsyncMsgIncludes() {
let count = 0;
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(
2019-01-22 01:15:25 -05:00
async () => {
count++;
throw new TypeError("Hello world!");
},
TypeError,
"world"
);
assert(count === 1);
});
2019-03-04 14:19:03 -05:00
test(async function testingThrowsAsyncMsgNotIncludes() {
2019-01-22 01:15:25 -05:00
let count = 0;
let didThrow = false;
try {
2019-03-06 16:39:50 -05:00
await assertThrowsAsync(
2019-01-22 01:15:25 -05:00
async () => {
count++;
throw new TypeError("Hello world!");
},
TypeError,
"foobar"
);
} catch (e) {
assert(
e.message ===
`Expected error message to include "foobar", but got "Hello world!".`
);
didThrow = true;
}
assert(count === 1);
assert(didThrow);
});
2019-03-04 14:19:03 -05:00
runIfMain(import.meta, { parallel: true });