Novah Documentation

novah.test

A lightweight test library. Tests can be either automatically registered with the test and testWith function and ran with runAllTests or runTestsFor or manually created with the Test, Tests and Setup constructors and ran with runTests.

Types


Suite

visibility: public+
constructors: Test, Tests, Setup

Represents one or more tests to be run.


TestResult

visibility: public+
constructors: Success, Failure, Error

All possible results for a test suite.

Declarations


Test

visibility: public
type: String -> (Unit -> Unit) -> Suite

Tests

visibility: public
type: String -> List (Unit -> Unit) -> Suite

Setup

visibility: public
type: { after : Unit -> Unit, before : Unit -> Unit, suite : Suite } -> Suite

Success

visibility: public
type: TestResult

Failure

visibility: public
type: TestResult

Error

visibility: public
type: TestResult

allRegisteredtests

visibility: private
type: List Suite

test

visibility: public
type: String -> (Unit -> Unit) -> Unit

Register a test function.


testWith

visibility: public
type: (Unit -> Unit) -> (Unit -> Unit) -> String -> (Unit -> Unit) -> Unit

Register a test function with a before and after hook.


withTable

visibility: public
type: List { | r } -> ({ | r } -> Unit) -> Unit

Executes the function for every entry in the table. Ex:

withTable
  [ { animal: "Cat", sound: "meow" }
  , { animal: "Dog", sound: "woof" }
  , { animal: "Duck", sound: "quack" }
  ]
  \{animal, sound} -> makeSound animal `shouldBe` sound

runTests

visibility: public
type: List Suite -> TestResult

Run the specified tests.


runAllTests

visibility: public
type: Unit -> TestResult

Run all registered tests. Tests need to be located in a root test package.


runTestsFor

visibility: public
type: String -> TestResult

Run all registered tests. Modules containing tests will be searched in the given root package.


shouldBe

visibility: public
type: {{ Equals a }} -> a -> a -> Unit

Fails the test if x is not equals y.


shouldNotBe

visibility: public
type: {{ Equals a }} -> a -> a -> Unit

Fails the test if x is equals y.


recordShouldBe

visibility: public
type: { | r } -> { | r } -> Unit

Fails the test if the record r1 is not equals r2.


recordShouldNotBe

visibility: public
type: { | r } -> { | r } -> Unit

Fails the test if the record r1 is equals r2.


shouldBeIn

visibility: public
type: {{ Contained a b }} -> a -> b -> Unit

Fails the test if the element is not inside the container.


shouldNotBeIn

visibility: public
type: {{ Contained a b }} -> a -> b -> Unit

Fails the test if the element is inside the container.


shouldAllBeIn

visibility: public
type: {{ Contained a b }} -> List a -> b -> Unit

Fails the test if some element of the list is not inside the container.


shouldBeSome

visibility: public
type: Option a -> Unit

Fails the test if this option is empty.


shouldBeNone

visibility: public
type: Option a -> Unit

Fails the test if this option is not empty.


shouldBeEmpty

visibility: public
type: List a -> Unit

Fails the test if this list is not empty.


shouldNotBeEmpty

visibility: public
type: List a -> Unit

Fails the test if this list is empty.


check

visibility: private
type: String -> (Unit -> Unit) -> List Int32