Testing infrastructure in Hakaru
Unit testing has been created for Hakaru’s main functions. The test suite is managed by Cabal and written in Haskell.
Tests written to test programs written using Hakaru are located in the
tests/ subdirectory at the root of the
project. Tests written in Haskell to check Hakaru functionality can be found at
Hakaru can be tested by running
cabal test or
stack test from the root directory of the project.
Note: Tests that require Maple, such as
simplify tests, are only run if a local installation of Maple is detected.
Creating New Tests
Hakaru testing is managed in the
hakaru.cabal file found in the root directory. The main file for using the test suite is
TestSuite.hs, which can be
For all tests, two programs are required – the program to test and a program representing the expected result.
Writing Hakaru Tests
When creating Hakaru tests, your two programs must be saved as seperate files.
You can add a test of your Hakaru programs to a Haskell program by using the
testConcreteFiles function from
haskell/Tests/TestTools.hs. This function
takes two Hakaru programs as arguments. It first runs
simplify on the first file and then asserts if it is equivilant to the second file.
Writing Haskell Tests
Haskell tests are created using the
HUnit testing framework. Most existing Haskell tests use the
testSStriv function from
This function asserts that the first Haskell function passed to it simplifies to the same function provided by the second function argument. The
simplification performed specifically calls the
simplify Hakaru transform.