Assertion collection for JavaScript data.
Module can be divided into two categories.
Top-type module can accept any JavaScript data. In other words, it accepts the
unknown
type.
The module directly under namespace is it.
Sub-type modules are modules that perform type-dependent operations. It can use type-specific methods and compare values.
For example, the module under number
is a sub-type module that takes a
number
type as an argument.
All function signatures have an asserts
specifier.
All modules throw an error if the assert fails. And the errors are fully customizable.
No opinion on error message. Nothing by default.
You can give message.
import { assertNumber } from "https://deno.land/x/assertion@$VERSION/assert_number.ts";
declare const input: unknown;
assertNumber(input, `must be number`);
No opinion on error constructor.
By default, use Error
constructor.
To throw RangeError
instead, do the following.
import { assertNonNegativeInteger } from "https://deno.land/x/assertion@$VERSION/number/assert_non_negative_integer.ts";
declare const input: number;
assertNonNegativeInteger(input, `must be non-negative integer`, RangeError);
Assert the input is array.
import { assertArray } from "https://deno.land/x/assertion@$VERSION/assert_array.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertArray([]));
assertThrows(() => assertArray({}));
Assert the input is AsyncIterable
.
import { assertAsyncIterable } from "https://deno.land/x/assertion@$VERSION/assert_async_iterable.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(
assertAsyncIterable({
async *[Symbol.asyncIterator]() {
yield "hello";
},
}),
);
assertThrows(() => assertAsyncIterable(() => {}));
Assert the input is bigint
.
import { assertBigint } from "https://deno.land/x/assertion@$VERSION/assert_bigint.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertBigint(1000n));
assertThrows(() => assertBigint(undefined));
Assert the input is boolean
.
import { assertBoolean } from "https://deno.land/x/assertion@$VERSION/assert_boolean.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertBoolean(true));
assertThrows(() => assertBoolean(null));
Assert the input is Date
.
import { assertDate } from "https://deno.land/x/assertion@$VERSION/assert_date.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertDate(new Date()));
assertThrows(() => assertDate({}));
Assert the input is Error
.
import { assertError } from "https://deno.land/x/assertion@$VERSION/assert_error.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertError(Error()));
assertFalse(assertError(new SyntaxError()));
assertThrows(() => assertError(new Date()));
Assert the input is Function
.
import { assertFunction } from "https://deno.land/x/assertion@$VERSION/assert_function.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertFunction(() => {}));
assertThrows(() => assertFunction({}));
Assert the input is Iterable
.
import { assertIterable } from "https://deno.land/x/assertion@$VERSION/assert_iterable.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertIterable(""));
assertThrows(() => assertIterable({}));
Assert the input is not null
or undefined
.
import { assertNonNullable } from "https://deno.land/x/assertion@$VERSION/assert_non_nullable.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNonNullable(""));
assertThrows(() => assertNonNullable(null));
assertThrows(() => assertNonNullable(undefined));
Assert the input is null
.
import { assertNull } from "https://deno.land/x/assertion@$VERSION/assert_null.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNull(null));
assertThrows(() => assertNull(undefined));
Assert the input is null
or undefined
.
import { assertNullable } from "https://deno.land/x/assertion@$VERSION/assert_nullable.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNullable(null));
assertFalse(assertNullable(undefined));
assertThrows(() => assertNullable({}));
Assert the input is number
.
import { assertNumber } from "https://deno.land/x/assertion@$VERSION/assert_number.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNumber(1000));
assertThrows(() => assertNumber("hello world"));
Assert the input is object
.
import { assertObject } from "https://deno.land/x/assertion@$VERSION/assert_object.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertObject({}));
assertThrows(() => assertObject(null));
Assert the input is Primitive
.
import { assertPrimitive } from "https://deno.land/x/assertion@$VERSION/assert_primitive.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertPrimitive(true));
assertThrows(() => assertPrimitive({}));
type Primitive =
| number
| string
| boolean
| bigint
| undefined
| null
| symbol;
Assert the input is Promise
.
import { assertPromise } from "https://deno.land/x/assertion@$VERSION/assert_promise.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertPromise(Promise.resolve()));
assertThrows(() => assertPromise({}));
Assert the input is RegExp
.
import { assertRegExp } from "https://deno.land/x/assertion@$VERSION/assert_reg_exp.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertRegExp(new RegExp("")));
assertThrows(() => assertRegExp({}));
Assert the input is string
.
import { assertString } from "https://deno.land/x/assertion@$VERSION/assert_string.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertString("hello world"));
assertThrows(() => assertString(1000));
Assert the input is symbol
.
import { assertSymbol } from "https://deno.land/x/assertion@$VERSION/assert_symbol.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertSymbol(Symbol("symbol")));
assertThrows(() => assertSymbol(null));
Assert the input is undefined
.
import { assertUndefined } from "https://deno.land/x/assertion@$VERSION/assert_undefined.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertUndefined(undefined));
assertThrows(() => assertUndefined(null));
Assert a subtype of number
. All assertion functions must satisfy ⊂ number
.
Assert the input is even.
import { assertEven } from "https://deno.land/x/assertion@$VERSION/number/assert_even.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertEven(0));
assertThrows(() => assertEven(1));
Assert the input is negative number.
import { assertNegativeNumber } from "https://deno.land/x/assertion@$VERSION/number/assert_negative_number.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNegativeNumber(-1));
assertThrows(() => assertNegativeNumber(0));
Assert the input is non-negative integer.
import { assertNonNegativeInteger } from "https://deno.land/x/assertion@$VERSION/number/assert_non_negative_integer.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNonNegativeInteger(0));
assertFalse(assertNonNegativeInteger(1));
assertThrows(() => assertNonNegativeInteger(-1));
Assert the input is non-negative number. Non-negative number means greater than or equal to zero.
import { assertNonNegativeNumber } from "https://deno.land/x/assertion@$VERSION/number/assert_non_negative_number.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNonNegativeNumber(0));
assertFalse(assertNonNegativeNumber(1.1));
assertThrows(() => assertNonNegativeNumber(-1));
Assert the input is non-positive number. Non-positive number means less than or equal to zero.
import { assertNonPositiveNumber } from "https://deno.land/x/assertion@$VERSION/number/assert_non_positive_number.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNonPositiveNumber(0));
assertFalse(assertNonPositiveNumber(-1));
assertThrows(() => assertNonPositiveNumber(1));
Assert the input is odd.
import { assertOdd } from "https://deno.land/x/assertion@$VERSION/number/assert_odd.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertOdd(1));
assertThrows(() => assertOdd(0));
Assert the input is positive number.
import { assertPositiveNumber } from "https://deno.land/x/assertion@$VERSION/number/assert_positive_number.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertPositiveNumber(1));
assertThrows(() => assertPositiveNumber(0));
Assert the input is unit interval. The unit interval means to the interval between 0 and 1 on the real number line.
import { assertUnitInterval } from "https://deno.land/x/assertion@$VERSION/number/assert_unit_interval.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertUnitInterval(0));
assertFalse(assertUnitInterval(1.0));
assertThrows(() => assertUnitInterval(-1));
Assert a subtype of Iterable
. All assertion functions must satisfy ⊂
Iterable<unknown>
.
Assert the input is empty.
import { assertEmpty } from "https://deno.land/x/assertion@$VERSION/iterable/assert_empty.ts";
import { assertFalse } from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertEmpty(""));
assertFalse(assertEmpty([]));
assertFalse(assertEmpty(new Set()));
string:
If the input is a string, it has a ""
assertion.
array:
If the input is a array, it has a []
assertion.
Assert the input is not empty.
import { assertNotEmpty } from "https://deno.land/x/assertion@$VERSION/iterable/assert_not_empty.ts";
import { assertFalse } from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertNotEmpty("a"));
assertFalse(assertNotEmpty([0, 1]));
array:
If the input is a T[]
, it has a [T, ...T[]]
assertion.
Assert the input is single element.
import { assertSingle } from "https://deno.land/x/assertion@$VERSION/iterable/assert_single.ts";
import {
assert,
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertSingle("a"));
assertFalse(assertSingle([0]));
assertThrows(() => assertSingle([0, 1, 2]));
array:
If the input is a T[]
, it has a [T]
assertion.
Validates a subtype of Date
. All validate functions must satisfy ⊂ Date
.
Assert the input is valid Date
.
import { assertValidDate } from "https://deno.land/x/assertion@$VERSION/date/assert_valid_date.ts";
import {
assertFalse,
assertThrows,
} from "https://deno.land/std/testing/asserts.ts";
assertFalse(assertValidDate(new Date("2000/1/1")));
assertThrows(() => assertValidDate(new Date("invalid")));
Bundle size is not exact. It is only a guide.
Usually, the actual bundle size is smaller than the indicated value.
There is no single entry point such as mod
.
This prevents the inclusion of many unnecessary modules.
Copyright © 2023-present Tomoki Miyauchi.
Released under the MIT license