effect-ts-laws
Version:
effect-ts law testing using fast-check.
56 lines • 2.76 kB
TypeScript
import type { ParameterOverrides } from '#law';
import type { Mono, MonomorphicGiven, MonomorphicGivenOf, TypeclassInstances } from '#laws';
import type { TypeLambda } from 'effect/HKT';
import { MonoProps } from '../laws/typeclass/monomorphic/props.js';
/**
* Test typeclass laws on the given instances of some datatype `F`. All laws are
* monomorphic on an underlying type `A`.
* @param given - Test options for the datatype under test.
* @category vitest
*/
export declare const testTypeclassLawsFor: <F extends TypeLambda, A, R = never, O = unknown, E = unknown>(given: MonomorphicGivenOf<F, A, R, O, E>) => <Ins extends TypeclassInstances<F, A, R, O, E>>(
/**
* Instances to test. Key is typeclass name and value is the instance under
* test. For example, `{ Monad: Option.Monad }` will run the monad typeclass
* laws on `Option`.
*/
instances: Ins,
/** Optional runtime `fast-check` parameters. */
parameters?: ParameterOverrides) => void;
/**
* Test typeclass laws on the given instances of some datatype `F`. All laws are
* monomorphic on an underlying type of `Option<number@.`.
* At the property `testTypeclassLaws.underlyingProps` you will find the same
* function, except it uses the underlying type `{x: number; y: string}, useful
* when testing laws on React components, as they can only accept a single
* object argument.
* @param given - Test options for the datatype under test.
* @category vitest
*/
export declare const testTypeclassLaws: {
<F extends TypeLambda, R = never, O = unknown, E = unknown>(given: MonomorphicGiven<F, R, O, E>): <Ins extends TypeclassInstances<F, Mono, R, O, E>>(
/**
* Instances to test. Key is typeclass name and value is the instance under
* test. For example, `{ Monad: Option.Monad }` will run the monad typeclass
* laws on `Option`.
*/
instances: Ins,
/** Optional runtime `fast-check` parameters. */
parameters?: ParameterOverrides) => void;
/**
* Test typeclass laws on the given instances of some datatype `F`. All laws are
* monomorphic on an underlying type of `{x: number; y: string}`.
* @param given - Test options for the datatype under test.
* @category vitest
*/
underlyingProps: <F extends TypeLambda, R = never, O = unknown, E = unknown>(given: MonomorphicGiven<F, R, O, E>) => <Ins extends TypeclassInstances<F, MonoProps, R, O, E>>(
/**
* Instances to test. Key is typeclass name and value is the
* instance under test. For example, `{ Monad: Option.Monad }` will run the
* monad typeclass laws on `Option`.
*/
instances: Ins,
/** Optional runtime `fast-check` parameters. */
parameters?: ParameterOverrides) => void;
};
//# sourceMappingURL=monomorphic.d.ts.map