Skip to main content
Go to Latest
File
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.//// Adapted from Node.js. Copyright Joyent, Inc. and other Node contributors.//// Permission is hereby granted, free of charge, to any person obtaining a// copy of this software and associated documentation files (the// "Software"), to deal in the Software without restriction, including// without limitation the rights to use, copy, modify, merge, publish,// distribute, sublicense, and/or sell copies of the Software, and to permit// persons to whom the Software is furnished to do so, subject to the// following conditions://// The above copyright notice and this permission notice shall be included// in all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE// USE OR OTHER DEALINGS IN THE SOFTWARE.import { assertStrictEquals } from "../../../testing/asserts.ts";import { isAnyArrayBuffer, isArgumentsObject, isArrayBuffer, isArrayBufferView, isAsyncFunction, isBigInt64Array, isBigIntObject, isBigUint64Array, isBooleanObject, isBoxedPrimitive, isDataView, isDate, isFloat32Array, isFloat64Array, isGeneratorFunction, isGeneratorObject, isInt16Array, isInt32Array, isInt8Array, isMap, isMapIterator, isModuleNamespaceObject, isNativeError, isNumberObject, isPromise, isRegExp, isSet, isSetIterator, isSharedArrayBuffer, isStringObject, isSymbolObject, isTypedArray, isUint16Array, isUint32Array, isUint8Array, isUint8ClampedArray, isWeakMap, isWeakSet,} from "./types.ts";
// Used to test isModuleNamespaceObjectimport * as testModuleNamespaceObject from "./types.ts";
// isAnyArrayBufferDeno.test("Should return true for valid ArrayBuffer types", () => { assertStrictEquals(isAnyArrayBuffer(new ArrayBuffer(0)), true); assertStrictEquals(isAnyArrayBuffer(new SharedArrayBuffer(0)), true);});
Deno.test("Should return false for invalid ArrayBuffer types", () => { assertStrictEquals(isAnyArrayBuffer({}), false); assertStrictEquals(isAnyArrayBuffer([]), false); assertStrictEquals(isAnyArrayBuffer(new Error()), false);});
// isArrayBufferViewDeno.test("Should return true for valid ArrayBufferView types", () => { assertStrictEquals(isArrayBufferView(new Int8Array(0)), true); assertStrictEquals(isArrayBufferView(new Uint8Array(0)), true); assertStrictEquals(isArrayBufferView(new Uint8ClampedArray(0)), true); assertStrictEquals(isArrayBufferView(new Int16Array(0)), true); assertStrictEquals(isArrayBufferView(new Uint16Array(0)), true); assertStrictEquals(isArrayBufferView(new Int32Array(0)), true); assertStrictEquals(isArrayBufferView(new Uint32Array(0)), true); assertStrictEquals(isArrayBufferView(new Float32Array(0)), true); assertStrictEquals(isArrayBufferView(new Float64Array(0)), true); assertStrictEquals(isArrayBufferView(new DataView(new ArrayBuffer(0))), true);});
Deno.test("Should return false for invalid ArrayBufferView types", () => { assertStrictEquals(isArrayBufferView({}), false); assertStrictEquals(isArrayBufferView([]), false); assertStrictEquals(isArrayBufferView(new Error()), false); assertStrictEquals(isArrayBufferView(new ArrayBuffer(0)), false);});
// isArgumentsObject// Note: not testable in TS
Deno.test("Should return false for invalid Argument types", () => { assertStrictEquals(isArgumentsObject({}), false); assertStrictEquals(isArgumentsObject([]), false); assertStrictEquals(isArgumentsObject(new Error()), false);});
// isArrayBufferDeno.test("Should return true for valid ArrayBuffer types", () => { assertStrictEquals(isArrayBuffer(new ArrayBuffer(0)), true);});
Deno.test("Should return false for invalid ArrayBuffer types", () => { assertStrictEquals(isArrayBuffer(new SharedArrayBuffer(0)), false); assertStrictEquals(isArrayBuffer({}), false); assertStrictEquals(isArrayBuffer([]), false); assertStrictEquals(isArrayBuffer(new Error()), false);});
// isAsyncFunctionDeno.test("Should return true for valid async function types", () => { const asyncFunction = async () => {}; assertStrictEquals(isAsyncFunction(asyncFunction), true);});
Deno.test("Should return false for invalid async function types", () => { const syncFunction = () => {}; assertStrictEquals(isAsyncFunction(syncFunction), false); assertStrictEquals(isAsyncFunction({}), false); assertStrictEquals(isAsyncFunction([]), false); assertStrictEquals(isAsyncFunction(new Error()), false);});
// isBigInt64ArrayDeno.test("Should return true for valid BigInt64Array types", () => { assertStrictEquals(isBigInt64Array(new BigInt64Array()), true);});
Deno.test("Should return false for invalid BigInt64Array types", () => { assertStrictEquals(isBigInt64Array(new BigUint64Array()), false); assertStrictEquals(isBigInt64Array(new Float32Array()), false); assertStrictEquals(isBigInt64Array(new Int32Array()), false); assertStrictEquals( isBigInt64Array({ [Symbol.toStringTag]: "BigInt64Array" }), false, );});
// isBigUint64ArrayDeno.test("Should return true for valid BigUint64Array types", () => { assertStrictEquals(isBigUint64Array(new BigUint64Array()), true);});
Deno.test("Should return false for invalid BigUint64Array types", () => { assertStrictEquals(isBigUint64Array(new BigInt64Array()), false); assertStrictEquals(isBigUint64Array(new Float32Array()), false); assertStrictEquals(isBigUint64Array(new Int32Array()), false); assertStrictEquals( isBigUint64Array({ [Symbol.toStringTag]: "BigUint64Array" }), false, );});
// isBooleanObjectDeno.test("Should return true for valid Boolean object types", () => { assertStrictEquals(isBooleanObject(new Boolean(false)), true); assertStrictEquals(isBooleanObject(new Boolean(true)), true);});
Deno.test("Should return false for invalid Boolean object types", () => { assertStrictEquals(isBooleanObject(false), false); assertStrictEquals(isBooleanObject(true), false); assertStrictEquals(isBooleanObject(Boolean(false)), false); assertStrictEquals(isBooleanObject(Boolean(true)), false);});
// isBoxedPrimitiveDeno.test("Should return true for valid boxed primitive values", () => { assertStrictEquals(isBoxedPrimitive(new Boolean(false)), true); assertStrictEquals(isBoxedPrimitive(Object(Symbol("foo"))), true); assertStrictEquals(isBoxedPrimitive(Object(BigInt(5))), true); assertStrictEquals(isBoxedPrimitive(new String("foo")), true);});
Deno.test("Should return false for invalid boxed primitive values", () => { assertStrictEquals(isBoxedPrimitive(false), false); assertStrictEquals(isBoxedPrimitive(Symbol("foo")), false);});
// isDateViewDeno.test("Should return true for valid DataView types", () => { assertStrictEquals(isDataView(new DataView(new ArrayBuffer(0))), true);});
Deno.test("Should return false for invalid DataView types", () => { assertStrictEquals(isDataView(new Float64Array(0)), false);});
// isDateDeno.test("Should return true for valid date types", () => { assertStrictEquals(isDate(new Date()), true); assertStrictEquals(isDate(new Date(0)), true); assertStrictEquals(isDate(new (eval("Date"))()), true);});
Deno.test("Should return false for invalid date types", () => { assertStrictEquals(isDate(Date()), false); assertStrictEquals(isDate({}), false); assertStrictEquals(isDate([]), false); assertStrictEquals(isDate(new Error()), false); assertStrictEquals(isDate(Object.create(Date.prototype)), false);});
// isFloat32ArrayDeno.test("Should return true for valid Float32Array types", () => { assertStrictEquals(isFloat32Array(new Float32Array(0)), true);});
Deno.test("Should return false for invalid Float32Array types", () => { assertStrictEquals(isFloat32Array(new ArrayBuffer(0)), false); assertStrictEquals(isFloat32Array(new Float64Array(0)), false); assertStrictEquals( isFloat32Array({ [Symbol.toStringTag]: "Float32Array" }), false, );});
// isFloat64ArrayDeno.test("Should return true for valid Float64Array types", () => { assertStrictEquals(isFloat64Array(new Float64Array(0)), true);});
Deno.test("Should return false for invalid Float64Array types", () => { assertStrictEquals(isFloat64Array(new ArrayBuffer(0)), false); assertStrictEquals(isFloat64Array(new Uint8Array(0)), false); assertStrictEquals( isFloat64Array({ [Symbol.toStringTag]: "Float64Array" }), false, );});
// isGeneratorFunctionDeno.test("Should return true for valid generator functions", () => { assertStrictEquals( isGeneratorFunction(function* foo() {}), true, );});
Deno.test("Should return false for invalid generator functions", () => { assertStrictEquals( isGeneratorFunction(function foo() {}), false, );});
// isGeneratorObjectDeno.test("Should return true for valid generator object types", () => { function* foo(): Iterator<void> {} assertStrictEquals(isGeneratorObject(foo()), true);});
Deno.test("Should return false for invalid generation object types", () => { assertStrictEquals( isGeneratorObject(function* foo() {}), false, );});
// isInt8ArrayDeno.test("Should return true for valid Int8Array types", () => { assertStrictEquals(isInt8Array(new Int8Array(0)), true);});
Deno.test("Should return false for invalid Int8Array types", () => { assertStrictEquals(isInt8Array(new ArrayBuffer(0)), false); assertStrictEquals(isInt8Array(new Float64Array(0)), false); assertStrictEquals(isInt8Array({ [Symbol.toStringTag]: "Int8Array" }), false);});
// isInt16ArrayDeno.test("Should return true for valid Int16Array types", () => { assertStrictEquals(isInt16Array(new Int16Array(0)), true);});
Deno.test("Should return false for invalid Int16Array type", () => { assertStrictEquals(isInt16Array(new ArrayBuffer(0)), false); assertStrictEquals(isInt16Array(new Float64Array(0)), false); assertStrictEquals( isInt16Array({ [Symbol.toStringTag]: "Int16Array" }), false, );});
// isInt32ArrayDeno.test("Should return true for valid Int32Array types", () => { assertStrictEquals(isInt32Array(new Int32Array(0)), true);});
Deno.test("Should return false for invalid Int32Array type", () => { assertStrictEquals(isInt32Array(new ArrayBuffer(0)), false); assertStrictEquals(isInt32Array(new Float64Array(0)), false); assertStrictEquals( isInt32Array({ [Symbol.toStringTag]: "Int32Array" }), false, );});
// isStringObjectDeno.test("Should return true for valid String types", () => { assertStrictEquals(isStringObject(new String("")), true); assertStrictEquals(isStringObject(new String("Foo")), true);});
Deno.test("Should return false for invalid String types", () => { assertStrictEquals(isStringObject(""), false); assertStrictEquals(isStringObject("Foo"), false);});
// isMapDeno.test("Should return true for valid Map types", () => { assertStrictEquals(isMap(new Map()), true);});
Deno.test("Should return false for invalid Map types", () => { assertStrictEquals(isMap({}), false); assertStrictEquals(isMap([]), false); assertStrictEquals(isMap(new Date()), false); assertStrictEquals(isMap(new Error()), false);});
// isMapIteratorDeno.test("Should return true for valid Map Iterator types", () => { const map = new Map(); assertStrictEquals(isMapIterator(map.keys()), true); assertStrictEquals(isMapIterator(map.values()), true); assertStrictEquals(isMapIterator(map.entries()), true); assertStrictEquals(isMapIterator(map[Symbol.iterator]()), true);});
Deno.test("Should return false for invalid Map iterator types", () => { assertStrictEquals(isMapIterator(new Map()), false); assertStrictEquals(isMapIterator([]), false); assertStrictEquals(isMapIterator(new Date()), false); assertStrictEquals(isMapIterator(new Error()), false);});
// isModuleNamespaceObjectDeno.test("Should return true for valid module namespace objects", () => { assertStrictEquals(isModuleNamespaceObject(testModuleNamespaceObject), true);});
Deno.test("Should return false for invalid module namespace objects", () => { assertStrictEquals(isModuleNamespaceObject(assertStrictEquals), false);});
// isNativeErrorDeno.test("Should return true for valid Error types", () => { assertStrictEquals(isNativeError(new Error()), true); assertStrictEquals(isNativeError(new TypeError()), true); assertStrictEquals(isNativeError(new RangeError()), true);});
Deno.test("Should return false for invalid Error types", () => { assertStrictEquals(isNativeError(null), false); assertStrictEquals(isNativeError(NaN), false);});
// isNumberObjectDeno.test("Should return true for valid number objects", () => { assertStrictEquals(isNumberObject(new Number(0)), true);});
Deno.test("Should return false for invalid number types", () => { assertStrictEquals(isNumberObject(0), false);});
// isBigIntObjectDeno.test("Should return true for valid number objects", () => { assertStrictEquals(isBigIntObject(new Object(BigInt(42))), true);});
Deno.test("Should return false for invalid number types", () => { assertStrictEquals(isBigIntObject(BigInt(42)), false);});
// isPromiseDeno.test("Should return true for valid Promise types", () => { assertStrictEquals(isPromise(Promise.resolve(42)), true);});
Deno.test("Should return false for invalid Promise types", () => { assertStrictEquals(isPromise(new Object()), false);});
// isRegExpDeno.test("Should return true for valid RegExp", () => { assertStrictEquals(isRegExp(/abc/), true); assertStrictEquals(isRegExp(new RegExp("abc")), true);});
Deno.test("Should return false for invalid RegExp types", () => { assertStrictEquals(isRegExp({}), false); assertStrictEquals(isRegExp("/abc/"), false);});
// isSetDeno.test("Should return true for valid Set types", () => { assertStrictEquals(isSet(new Set()), true);});
Deno.test("Should return false for invalid Set types", () => { assertStrictEquals(isSet({}), false); assertStrictEquals(isSet([]), false); assertStrictEquals(isSet(new Map()), false); assertStrictEquals(isSet(new Error()), false);});
// isSetIteratorDeno.test("Should return true for valid Set Iterator types", () => { const set = new Set(); assertStrictEquals(isSetIterator(set.keys()), true); assertStrictEquals(isSetIterator(set.values()), true); assertStrictEquals(isSetIterator(set.entries()), true); assertStrictEquals(isSetIterator(set[Symbol.iterator]()), true);});
Deno.test("Should return false for invalid Set Iterator types", () => { assertStrictEquals(isSetIterator(new Set()), false); assertStrictEquals(isSetIterator([]), false); assertStrictEquals(isSetIterator(new Map()), false); assertStrictEquals(isSetIterator(new Error()), false);});
// isSharedArrayBufferDeno.test("Should return true for valid SharedArrayBuffer types", () => { assertStrictEquals(isSharedArrayBuffer(new SharedArrayBuffer(0)), true);});
Deno.test("Should return false for invalid SharedArrayBuffer types", () => { assertStrictEquals(isSharedArrayBuffer(new ArrayBuffer(0)), false);});
// isStringObjectDeno.test("Should return true for valid String Object types", () => { assertStrictEquals(isStringObject(new String("")), true); assertStrictEquals(isStringObject(new String("Foo")), true);});
Deno.test("Should return false for invalid String Object types", () => { assertStrictEquals(isStringObject(""), false); assertStrictEquals(isStringObject("Foo"), false);});
// isSymbolObjectDeno.test("Should return true for valid Symbol types", () => { assertStrictEquals(isSymbolObject(Object(Symbol("foo"))), true);});
Deno.test("Should return false for invalid Symbol types", () => { assertStrictEquals(isSymbolObject(Symbol("foo")), false);});
// isTypedArrayDeno.test("Should return true for valid TypedArray types", () => { assertStrictEquals(isTypedArray(new Uint8Array(0)), true); assertStrictEquals(isTypedArray(new Float64Array(0)), true);});
Deno.test("Should return false for invalid TypedArray types", () => { assertStrictEquals(isTypedArray(new ArrayBuffer(0)), false); assertStrictEquals( isTypedArray({ [Symbol.toStringTag]: "Uint8Array" }), false, );});
// isUint8ArrayDeno.test("Should return true for valid Uint8Array types", () => { assertStrictEquals(isUint8Array(new Uint8Array(0)), true);});
Deno.test("Should return false for invalid Uint8Array types", () => { assertStrictEquals(isUint8Array(new ArrayBuffer(0)), false); assertStrictEquals(isUint8Array(new Float64Array(0)), false); assertStrictEquals( isUint8Array({ [Symbol.toStringTag]: "Uint8Array" }), false, );});
// isUint8ClampedArrayDeno.test("Should return true for valid Uint8ClampedArray types", () => { assertStrictEquals(isUint8ClampedArray(new Uint8ClampedArray(0)), true);});
Deno.test("Should return false for invalid Uint8ClampedArray types", () => { assertStrictEquals(isUint8ClampedArray(new ArrayBuffer(0)), false); assertStrictEquals(isUint8ClampedArray(new Float64Array(0)), false); assertStrictEquals( isUint8ClampedArray({ [Symbol.toStringTag]: "Uint8ClampedArray" }), false, );});
// isUint16ArrayDeno.test("Should return true for valid Uint16Array types", () => { assertStrictEquals(isUint16Array(new Uint16Array(0)), true);});
Deno.test("Should return false for invalid Uint16Array types", () => { assertStrictEquals(isUint16Array(new ArrayBuffer(0)), false); assertStrictEquals(isUint16Array(new Float64Array(0)), false); assertStrictEquals( isUint16Array({ [Symbol.toStringTag]: "Uint16Array" }), false, );});
// isUint32ArrayDeno.test("Should return true for valid Uint32Array types", () => { assertStrictEquals(isUint32Array(new Uint32Array(0)), true);});
Deno.test("Should return false for invalid Uint32Array types", () => { assertStrictEquals(isUint32Array(new ArrayBuffer(0)), false); assertStrictEquals(isUint32Array(new Float64Array(0)), false); assertStrictEquals( isUint32Array({ [Symbol.toStringTag]: "Uint32Array" }), false, );});
// isWeakMapDeno.test("Should return true for valid WeakMap types", () => { assertStrictEquals(isWeakMap(new WeakMap()), true);});
Deno.test("Should return false for invalid WeakMap types", () => { assertStrictEquals(isWeakMap(new Set()), false); assertStrictEquals(isWeakMap(new Map()), false);});
// isWeakSetDeno.test("Should return true for valid WeakSet types", () => { assertStrictEquals(isWeakSet(new WeakSet()), true);});
Deno.test("Should return false for invalid WeakSet types", () => { assertStrictEquals(isWeakSet(new Set()), false); assertStrictEquals(isWeakSet(new Map()), false);});