deno.land / std@0.224.0 / assert / assert_array_includes.ts
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.// This module is browser compatible.import { equal } from "./equal.ts";import { format } from "../internal/format.ts";import { AssertionError } from "./assertion_error.ts";
/** An array-like object (`Array`, `Uint8Array`, `NodeList`, etc.) that is not a string */export type ArrayLikeArg<T> = ArrayLike<T> & object;
/** * Make an assertion that `actual` includes the `expected` values. If not then * an error will be thrown. * * Type parameter can be specified to ensure values under comparison have the * same type. * * @example * ```ts * import { assertArrayIncludes } from "https://deno.land/std@$STD_VERSION/assert/assert_array_includes.ts"; * * assertArrayIncludes([1, 2], [2]); // Doesn't throw * assertArrayIncludes([1, 2], [3]); // Throws * ``` */export function assertArrayIncludes<T>( actual: ArrayLikeArg<T>, expected: ArrayLikeArg<T>, msg?: string,) { const missing: unknown[] = []; for (let i = 0; i < expected.length; i++) { let found = false; for (let j = 0; j < actual.length; j++) { if (equal(expected[i], actual[j])) { found = true; break; } } if (!found) { missing.push(expected[i]); } } if (missing.length === 0) { return; }
const msgSuffix = msg ? `: ${msg}` : "."; msg = `Expected actual: "${format(actual)}" to include: "${ format(expected) }"${msgSuffix}\nmissing: ${format(missing)}`; throw new AssertionError(msg);}
Version Info