1/**
2 * @since 4.0.0
3 */
4
5import * as Equal from "effect/Equal"
6import * as assert from "node:assert"
7import { test as vitest } from "vitest"
8
9/**
10 * Asserts that two values are equal using Effect's equality semantics.
11 *
12 * @category testing
13 * @since 4.0.0
14 */
15export const assertEquals = <A>(actual: A, expected: A): void => {
16 if (!Equal.equals(actual, expected)) {
17 assert.deepStrictEqual(actual, expected)
18 assert.fail("Expected values to be Equal.equals")
19 }
20}
21
22/**
23 * Registers a documentation snippet as a test.
24 *
25 * @category testing
26 * @since 4.0.0
27 */
28export const test = (
29 name: string,
30 run: () => unknown | PromiseLike<unknown>
31): void => {
32 vitest(name, run)
33}