summaryrefslogtreecommitdiff
path: root/std/node/_util
diff options
context:
space:
mode:
Diffstat (limited to 'std/node/_util')
-rw-r--r--std/node/_util/_util_types.ts201
-rw-r--r--std/node/_util/_util_types_test.ts483
2 files changed, 668 insertions, 16 deletions
diff --git a/std/node/_util/_util_types.ts b/std/node/_util/_util_types.ts
index 387f22f97..df8ccbb05 100644
--- a/std/node/_util/_util_types.ts
+++ b/std/node/_util/_util_types.ts
@@ -26,6 +26,207 @@ const _toString = Object.prototype.toString;
const _isObjectLike = (value: unknown): boolean =>
value !== null && typeof value === "object";
+const _isFunctionLike = (value: unknown): boolean =>
+ value !== null && typeof value === "function";
+
+export function isAnyArrayBuffer(value: unknown): boolean {
+ return (
+ _isObjectLike(value) &&
+ (_toString.call(value) === "[object ArrayBuffer]" ||
+ _toString.call(value) === "[object SharedArrayBuffer]")
+ );
+}
+
+export function isArrayBufferView(value: unknown): boolean {
+ return ArrayBuffer.isView(value);
+}
+
+export function isArgumentsObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Arguments]";
+}
+
+export function isArrayBuffer(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object ArrayBuffer]"
+ );
+}
+
+export function isAsyncFunction(value: unknown): boolean {
+ return (
+ _isFunctionLike(value) && _toString.call(value) === "[object AsyncFunction]"
+ );
+}
+
+export function isBigInt64Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object BigInt64Array]"
+ );
+}
+
+export function isBigUint64Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object BigUint64Array]"
+ );
+}
+
+export function isBooleanObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Boolean]";
+}
+
+export function isBoxedPrimitive(value: unknown): boolean {
+ return (
+ isBooleanObject(value) ||
+ isStringObject(value) ||
+ isNumberObject(value) ||
+ isSymbolObject(value) ||
+ isBigIntObject(value)
+ );
+}
+
+export function isDataView(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object DataView]";
+}
+
export function isDate(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Date]";
}
+
+// isExternal: Not implemented
+
+export function isFloat32Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Float32Array]"
+ );
+}
+
+export function isFloat64Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Float64Array]"
+ );
+}
+
+export function isGeneratorFunction(value: unknown): boolean {
+ return (
+ _isFunctionLike(value) &&
+ _toString.call(value) === "[object GeneratorFunction]"
+ );
+}
+
+export function isGeneratorObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Generator]";
+}
+
+export function isInt8Array(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Int8Array]";
+}
+
+export function isInt16Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Int16Array]"
+ );
+}
+
+export function isInt32Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Int32Array]"
+ );
+}
+
+export function isMap(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Map]";
+}
+
+export function isMapIterator(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Map Iterator]"
+ );
+}
+
+export function isModuleNamespaceObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Module]";
+}
+
+export function isNativeError(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Error]";
+}
+
+export function isNumberObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Number]";
+}
+
+export function isBigIntObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object BigInt]";
+}
+
+export function isPromise(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Promise]";
+}
+
+export function isRegExp(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object RegExp]";
+}
+
+export function isSet(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Set]";
+}
+
+export function isSetIterator(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Set Iterator]"
+ );
+}
+
+export function isSharedArrayBuffer(value: unknown): boolean {
+ return (
+ _isObjectLike(value) &&
+ _toString.call(value) === "[object SharedArrayBuffer]"
+ );
+}
+
+export function isStringObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object String]";
+}
+
+export function isSymbolObject(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object Symbol]";
+}
+
+// Adapted from Lodash
+export function isTypedArray(value: unknown): boolean {
+ /** Used to match `toStringTag` values of typed arrays. */
+ const reTypedTag = /^\[object (?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array\]$/;
+ return _isObjectLike(value) && reTypedTag.test(_toString.call(value));
+}
+
+export function isUint8Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Uint8Array]"
+ );
+}
+
+export function isUint8ClampedArray(value: unknown): boolean {
+ return (
+ _isObjectLike(value) &&
+ _toString.call(value) === "[object Uint8ClampedArray]"
+ );
+}
+
+export function isUint16Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Uint16Array]"
+ );
+}
+
+export function isUint32Array(value: unknown): boolean {
+ return (
+ _isObjectLike(value) && _toString.call(value) === "[object Uint32Array]"
+ );
+}
+
+export function isWeakMap(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object WeakMap]";
+}
+
+export function isWeakSet(value: unknown): boolean {
+ return _isObjectLike(value) && _toString.call(value) === "[object WeakSet]";
+}
diff --git a/std/node/_util/_util_types_test.ts b/std/node/_util/_util_types_test.ts
index cb7c06498..2d4307e77 100644
--- a/std/node/_util/_util_types_test.ts
+++ b/std/node/_util/_util_types_test.ts
@@ -21,40 +21,491 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
+const { test } = Deno;
import { assertStrictEquals } from "../../testing/asserts.ts";
+import {
+ isDate,
+ isMap,
+ isSet,
+ isAnyArrayBuffer,
+ isArrayBufferView,
+ isArgumentsObject,
+ isArrayBuffer,
+ isStringObject,
+ isAsyncFunction,
+ isBigInt64Array,
+ isBigUint64Array,
+ isBooleanObject,
+ isBoxedPrimitive,
+ isDataView,
+ isFloat32Array,
+ isFloat64Array,
+ isGeneratorFunction,
+ isGeneratorObject,
+ isInt8Array,
+ isInt16Array,
+ isInt32Array,
+ isMapIterator,
+ isModuleNamespaceObject,
+ isNativeError,
+ isSymbolObject,
+ isTypedArray,
+ isUint8Array,
+ isUint8ClampedArray,
+ isUint16Array,
+ isUint32Array,
+ isNumberObject,
+ isBigIntObject,
+ isPromise,
+ isRegExp,
+ isSetIterator,
+ isSharedArrayBuffer,
+ isWeakMap,
+ isWeakSet,
+} from "./_util_types.ts";
-import { isDate } from "./_util_types.ts";
+// Used to test isModuleNamespaceObject
+import * as testModuleNamespaceOpbject from "./_util_types.ts";
-const { test } = Deno;
+// isAnyArrayBuffer
+test("Should return true for valid ArrayBuffer types", () => {
+ assertStrictEquals(isAnyArrayBuffer(new ArrayBuffer(0)), true);
+ assertStrictEquals(isAnyArrayBuffer(new SharedArrayBuffer(0)), true);
+});
-test("New date instance with no arguments", () => {
- assertStrictEquals(isDate(new Date()), true);
+test("Should return false for invalid ArrayBuffer types", () => {
+ assertStrictEquals(isAnyArrayBuffer({}), false);
+ assertStrictEquals(isAnyArrayBuffer([]), false);
+ assertStrictEquals(isAnyArrayBuffer(new Error()), false);
});
-test("New date instance with value 0", () => {
- assertStrictEquals(isDate(new Date(0)), true);
+// isArrayBufferView
+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);
+});
+
+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
+
+test("Should return false for invalid Argument types", () => {
+ assertStrictEquals(isArgumentsObject({}), false);
+ assertStrictEquals(isArgumentsObject([]), false);
+ assertStrictEquals(isArgumentsObject(new Error()), false);
+});
+
+// isArrayBuffer
+test("Should return true for valid ArrayBuffer types", () => {
+ assertStrictEquals(isArrayBuffer(new ArrayBuffer(0)), true);
+});
+
+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);
+});
+
+// isAsyncFunction
+test("Should return true for valid async function types", () => {
+ const asyncFunction = async (): Promise<void> => {};
+ assertStrictEquals(isAsyncFunction(asyncFunction), true);
+});
+
+test("Should return false for invalid async function types", () => {
+ const syncFunction = (): void => {};
+ assertStrictEquals(isAsyncFunction(syncFunction), false);
+ assertStrictEquals(isAsyncFunction({}), false);
+ assertStrictEquals(isAsyncFunction([]), false);
+ assertStrictEquals(isAsyncFunction(new Error()), false);
+});
+
+// isBigInt64Array
+test("Should return true for valid BigInt64Array types", () => {
+ assertStrictEquals(isBigInt64Array(new BigInt64Array()), true);
+});
+
+test("Should return false for invalid BigInt64Array types", () => {
+ assertStrictEquals(isBigInt64Array(new BigUint64Array()), false);
+ assertStrictEquals(isBigInt64Array(new Float32Array()), false);
+ assertStrictEquals(isBigInt64Array(new Int32Array()), false);
+});
+
+// isBigUint64Array
+test("Should return true for valid isBigUint64Array types", () => {
+ assertStrictEquals(isBigUint64Array(new BigUint64Array()), true);
+});
+
+test("Should return false for invalid isBigUint64Array types", () => {
+ assertStrictEquals(isBigUint64Array(new BigInt64Array()), false);
+ assertStrictEquals(isBigUint64Array(new Float32Array()), false);
+ assertStrictEquals(isBigUint64Array(new Int32Array()), false);
+});
+
+// isBooleanObject
+test("Should return true for valid Boolean object types", () => {
+ assertStrictEquals(isBooleanObject(new Boolean(false)), true);
+ assertStrictEquals(isBooleanObject(new Boolean(true)), true);
+});
+
+test("Should return false for invalid isBigUint64Array types", () => {
+ assertStrictEquals(isBooleanObject(false), false);
+ assertStrictEquals(isBooleanObject(true), false);
+ assertStrictEquals(isBooleanObject(Boolean(false)), false);
+ assertStrictEquals(isBooleanObject(Boolean(true)), false);
+});
+
+// isBoxedPrimitive
+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);
+});
+
+test("Should return false for invalid boxed primitive values", () => {
+ assertStrictEquals(isBoxedPrimitive(false), false);
+ assertStrictEquals(isBoxedPrimitive(Symbol("foo")), false);
+});
+
+// isDateView
+test("Should return true for valid DataView types", () => {
+ assertStrictEquals(isDataView(new DataView(new ArrayBuffer(0))), true);
+});
+
+test("Should return false for invalid DataView types", () => {
+ assertStrictEquals(isDataView(new Float64Array(0)), false);
});
-test("New date instance in new context", () => {
+// isDate
+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);
});
-test("Date function is not of type Date", () => {
+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);
});
-test("Object is not of type Date", () => {
- assertStrictEquals(isDate({}), false);
+// isFloat32Array
+test("Should return true for valid Float32Array types", () => {
+ assertStrictEquals(isFloat32Array(new Float32Array(0)), true);
});
-test("Array is not of type Date", () => {
- assertStrictEquals(isDate([]), false);
+test("Should return false for invalid Float32Array types", () => {
+ assertStrictEquals(isFloat32Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isFloat32Array(new Float64Array(0)), false);
});
-test("Error is not of type Date", () => {
- assertStrictEquals(isDate(new Error()), false);
+// isFloat64Array
+test("Should return true for valid Float64Array types", () => {
+ assertStrictEquals(isFloat64Array(new Float64Array(0)), true);
});
-test("New object from Date prototype is not of type Date", () => {
- assertStrictEquals(isDate(Object.create(Date.prototype)), false);
+test("Should return false for invalid Float64Array types", () => {
+ assertStrictEquals(isFloat64Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isFloat64Array(new Uint8Array(0)), false);
+});
+
+// isGeneratorFunction
+test("Should return true for valid generator functions", () => {
+ assertStrictEquals(
+ isGeneratorFunction(function* foo() {}),
+ true
+ );
+});
+
+test("Should return false for invalid generator functions", () => {
+ assertStrictEquals(
+ isGeneratorFunction(function foo() {}),
+ false
+ );
+});
+
+// isGeneratorObject
+test("Should return true for valid generator object types", () => {
+ function* foo(): Iterator<void> {}
+ assertStrictEquals(isGeneratorObject(foo()), true);
+});
+
+test("Should return false for invalid generation object types", () => {
+ assertStrictEquals(
+ isGeneratorObject(function* foo() {}),
+ false
+ );
+});
+
+// isInt8Array
+test("Should return true for valid Int8Array types", () => {
+ assertStrictEquals(isInt8Array(new Int8Array(0)), true);
+});
+
+test("Should return false for invalid Int8Array types", () => {
+ assertStrictEquals(isInt8Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isInt8Array(new Float64Array(0)), false);
+});
+
+// isInt16Array
+test("Should return true for valid Int16Array types", () => {
+ assertStrictEquals(isInt16Array(new Int16Array(0)), true);
+});
+
+test("Should return false for invalid Int16Array type", () => {
+ assertStrictEquals(isInt16Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isInt16Array(new Float64Array(0)), false);
+});
+
+// isInt32Array
+test("Should return true for valid isInt32Array types", () => {
+ assertStrictEquals(isInt32Array(new Int32Array(0)), true);
+});
+
+test("Should return false for invalid isInt32Array type", () => {
+ assertStrictEquals(isInt32Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isInt32Array(new Float64Array(0)), false);
+});
+
+// isStringObject
+test("Should return true for valid String types", () => {
+ assertStrictEquals(isStringObject(new String("")), true);
+ assertStrictEquals(isStringObject(new String("Foo")), true);
+});
+
+test("Should return false for invalid String types", () => {
+ assertStrictEquals(isStringObject(""), false);
+ assertStrictEquals(isStringObject("Foo"), false);
+});
+
+// isMap
+test("Should return true for valid Map types", () => {
+ assertStrictEquals(isMap(new Map()), true);
+});
+
+test("Should return false for invalid Map types", () => {
+ assertStrictEquals(isMap({}), false);
+ assertStrictEquals(isMap([]), false);
+ assertStrictEquals(isMap(new Date()), false);
+ assertStrictEquals(isMap(new Error()), false);
+});
+
+// isMapIterator
+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);
+});
+
+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);
+});
+
+// isModuleNamespaceObject
+test("Should return true for valid module namespace objects", () => {
+ assertStrictEquals(isModuleNamespaceObject(testModuleNamespaceOpbject), true);
+});
+
+test("Should return false for invalid module namespace objects", () => {
+ assertStrictEquals(isModuleNamespaceObject(assertStrictEquals), false);
+});
+
+// isNativeError
+test("Should return true for valid Error types", () => {
+ assertStrictEquals(isNativeError(new Error()), true);
+ assertStrictEquals(isNativeError(new TypeError()), true);
+ assertStrictEquals(isNativeError(new RangeError()), true);
+});
+
+test("Should return false for invalid Error types", () => {
+ assertStrictEquals(isNativeError(null), false);
+ assertStrictEquals(isNativeError(NaN), false);
+});
+
+// isNumberObject
+test("Should return true for valid number objects", () => {
+ assertStrictEquals(isNumberObject(new Number(0)), true);
+});
+
+test("Should return false for invalid number types", () => {
+ assertStrictEquals(isNumberObject(0), false);
+});
+
+// isBigIntObject
+test("Should return true for valid number objects", () => {
+ assertStrictEquals(isBigIntObject(new Object(BigInt(42))), true);
+});
+
+test("Should return false for invalid number types", () => {
+ assertStrictEquals(isBigIntObject(BigInt(42)), false);
+});
+
+// isPromise
+test("Should return true for valid Promise types", () => {
+ assertStrictEquals(isPromise(Promise.resolve(42)), true);
+});
+
+test("Should return false for invalid Promise types", () => {
+ assertStrictEquals(isPromise(new Object()), false);
+});
+
+// isRegExp
+test("Should return true for valid RegExp", () => {
+ assertStrictEquals(isRegExp(/abc/), true);
+ assertStrictEquals(isRegExp(new RegExp("abc")), true);
+});
+
+test("Should return false for invalid RegExp types", () => {
+ assertStrictEquals(isRegExp({}), false);
+ assertStrictEquals(isRegExp("/abc/"), false);
+});
+
+// isSet
+test("Should return true for valid Set types", () => {
+ assertStrictEquals(isSet(new Set()), true);
+});
+
+test("Should return false for invalid Set types", () => {
+ assertStrictEquals(isSet({}), false);
+ assertStrictEquals(isSet([]), false);
+ assertStrictEquals(isSet(new Map()), false);
+ assertStrictEquals(isSet(new Error()), false);
+});
+
+// isSetIterator
+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);
+});
+
+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);
+});
+
+// isSharedArrayBuffer
+test("Should return true for valid SharedArrayBuffer types", () => {
+ assertStrictEquals(isSharedArrayBuffer(new SharedArrayBuffer(0)), true);
+});
+
+test("Should return false for invalid SharedArrayBuffer types", () => {
+ assertStrictEquals(isSharedArrayBuffer(new ArrayBuffer(0)), false);
+});
+
+// isStringObject
+test("Should return true for valid String Object types", () => {
+ assertStrictEquals(isStringObject(new String("")), true);
+ assertStrictEquals(isStringObject(new String("Foo")), true);
+});
+
+test("Should return false for invalid String Object types", () => {
+ assertStrictEquals(isStringObject(""), false);
+ assertStrictEquals(isStringObject("Foo"), false);
+});
+
+// isSymbolObject
+test("Should return true for valid Symbol types", () => {
+ assertStrictEquals(isSymbolObject(Object(Symbol("foo"))), true);
+});
+
+test("Should return false for invalid Symbol types", () => {
+ assertStrictEquals(isSymbolObject(Symbol("foo")), false);
+});
+
+// isTypedArray
+test("Should return true for valid TypedArray types", () => {
+ assertStrictEquals(isTypedArray(new Uint8Array(0)), true);
+ assertStrictEquals(isTypedArray(new Float64Array(0)), true);
+});
+
+test("Should return false for invalid TypedArray types", () => {
+ assertStrictEquals(isTypedArray(new ArrayBuffer(0)), false);
+});
+
+// isUint8Array
+test("Should return true for valid Uint8Array types", () => {
+ assertStrictEquals(isUint8Array(new Uint8Array(0)), true);
+});
+
+test("Should return false for invalid Uint8Array types", () => {
+ assertStrictEquals(isUint8Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isUint8Array(new Float64Array(0)), false);
+});
+
+// isUint8ClampedArray
+test("Should return true for valid Uint8ClampedArray types", () => {
+ assertStrictEquals(isUint8ClampedArray(new Uint8ClampedArray(0)), true);
+});
+
+test("Should return false for invalid Uint8Array types", () => {
+ assertStrictEquals(isUint8ClampedArray(new ArrayBuffer(0)), false);
+ assertStrictEquals(isUint8ClampedArray(new Float64Array(0)), false);
+});
+
+// isUint16Array
+test("Should return true for valid isUint16Array types", () => {
+ assertStrictEquals(isUint16Array(new Uint16Array(0)), true);
+});
+
+test("Should return false for invalid Uint16Array types", () => {
+ assertStrictEquals(isUint16Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isUint16Array(new Float64Array(0)), false);
+});
+
+// isUint32Array
+test("Should return true for valid Uint32Array types", () => {
+ assertStrictEquals(isUint32Array(new Uint32Array(0)), true);
+});
+
+test("Should return false for invalid isUint16Array types", () => {
+ assertStrictEquals(isUint32Array(new ArrayBuffer(0)), false);
+ assertStrictEquals(isUint32Array(new Float64Array(0)), false);
+});
+
+// isWeakMap
+test("Should return true for valid WeakMap types", () => {
+ assertStrictEquals(isWeakMap(new WeakMap()), true);
+});
+
+test("Should return false for invalid WeakMap types", () => {
+ assertStrictEquals(isWeakMap(new Set()), false);
+ assertStrictEquals(isWeakMap(new Map()), false);
+});
+
+// isWeakSet
+test("Should return true for valid WeakSet types", () => {
+ assertStrictEquals(isWeakSet(new WeakSet()), true);
+});
+
+test("Should return false for invalid WeakSet types", () => {
+ assertStrictEquals(isWeakSet(new Set()), false);
+ assertStrictEquals(isWeakSet(new Map()), false);
});