UNPKG

4.5

Version:

Monadic test assertions

26 lines (19 loc) 742 B
import { Assertion, Verification } from '../types'; import { formatError, isEqual } from '../helpers'; import { curry } from '@typed/curry'; export const equals: EqualsFn = curry(<T>(expected: T, actual: T): Assertion<T> => new Equals<T>(expected, actual)); export interface EqualsFn { <T>(expected: T, actual: T): Assertion<T>; <T>(expected: T): (actual: T) => Assertion<T>; } export class Equals<T> implements Assertion<T> { constructor(private expected: T, private actual: T) {} public verify(verification: Verification<T>) { const { expected, actual } = this; if (isEqual(expected, actual)) verification.success(actual); else verification.failure(formatError(`Not Equal`, expected, actual)); } }