Options
All
  • Public
  • Public/Protected
  • All
Menu

fp-ts-quickcheck

fp-ts-test

fp-ts port of Haskell's QuickCheck.

NOTE Please note that shrinking is exposed, but not used in the assertions. When used in the assertions, this library will be ready for production use.

Features

  • Pure - Purely functional implementation.
  • Compatible - Easily integrates into existing testing frameworks.
  • Extensible - Customize what testable property's are.
  • Shrinking (in progress) - Let the software decide what the minimum value that is causing an error.

Installation

yarn add -D fp-ts-quickcheck

Quick Start

Grab your favourite test library, in this case jest, and put the assertion call of this library into the test caller.

export function add(x: number, y: number) {
return x + y
}

import { quickcheck, arbitrary } from "fp-ts-quickcheck"
import { expect, it, describe } from "@jest/globals"
import { pipe } from "fp-ts/function"

describe(add, () => {
const numnum = arbitrary.tuple(arbitraty.int(), arbitrary.int())

it("should be an associative operation", () => {
// returning a boolean
quickcheck.sync(numnum, ([x, y]) => add(y, x) === add(x, y))
})

it("should be an associative operation", () => {
// throwing an assertion error
quickcheck.sync(numnum, ([x, y]) => {
expect(add(x, y)).toBe(add(y, x))
})
})
})

Generated using TypeDoc