Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import type { StorageConformanceAssertions } from "./types.ts";
|
|
|
|
export type ExpectLike = (actual: unknown, message?: string) => unknown;
|
|
|
|
type ExpectResult = {
|
|
toBe(expected: unknown): unknown;
|
|
toBeGreaterThan(expected: number): unknown;
|
|
toEqual(expected: unknown): unknown;
|
|
toMatchObject(expected: unknown): unknown;
|
|
toBeTruthy(): unknown;
|
|
readonly rejects: {
|
|
toThrow(expected?: string | RegExp): unknown;
|
|
};
|
|
};
|
|
|
|
/** Adapts a Vitest/Jest-compatible `expect` function without importing either runner. */
|
|
export function createExpectAssertions(expect: ExpectLike): StorageConformanceAssertions {
|
|
const result = (actual: unknown, message?: string): ExpectResult => expect(actual, message) as ExpectResult;
|
|
return {
|
|
ok(value, message) {
|
|
result(value, message).toBeTruthy();
|
|
},
|
|
strictEqual(actual, expected) {
|
|
result(actual).toBe(expected);
|
|
},
|
|
deepEqual(actual, expected) {
|
|
result(actual).toEqual(expected);
|
|
},
|
|
partialDeepEqual(actual, expected) {
|
|
result(actual).toMatchObject(expected);
|
|
},
|
|
greaterThan(actual, expected) {
|
|
result(actual).toBeGreaterThan(expected);
|
|
},
|
|
async rejects(operation, messageIncludes) {
|
|
await result(operation).rejects.toThrow(messageIncludes);
|
|
},
|
|
};
|
|
}
|