unison-expect
lets you create test expectations that result in expressive failure messages.
It is currently in an early-development state.
.> pull https://github.com/fboeller/unison-expect:.trunk .external.expect.v0
Create a function and test watches.
brokenFib : Nat -> Nat
brokenFib n =
if n == 0 then 0
else if n == 1 then 1
else brokenFib (drop n 1) + brokenFib (drop n 2)
test> brokenFib.tests.t1 = [Nat.expect (brokenFib 0) (ToEqual 1)]
test> brokenFib.tests.t2 = [Nat.expect (brokenFib 1) (ToEqual 1)]
test> brokenFib.tests.t3 = [Nat.expect (brokenFib 3) (ToEqual 3)]
Unison evaluates the test watches and prints an expressive failure message indicating the actual value and expected value.
Now evaluating any watch expressions (lines starting with `>`)... Ctrl+C cancels.
7 | test> brokenFib.tests.t1 = [Nat.expect (brokenFib 0) (ToEqual 1)]
🚫 FAILED Expected 0 to equal 1 (cached)
8 | test> brokenFib.tests.t2 = [Nat.expect (brokenFib 1) (ToEqual 1)]
✅ Passed (cached)
9 | test> brokenFib.tests.t3 = [Nat.expect (brokenFib 3) (ToEqual 3)]
🚫 FAILED Expected 2 to equal 3 (cached)