Test
You can create test very easily. 
 Just create a unary message for the Test and it's done!
Test math = [
    1 / 0
]
If you run niva test you will see this:
main.mainTest[jvm] > math[jvm] ❌
    java.lang.ArithmeticException: / by zero
Any test that does not throw an error is considered passed, which means it's time for us to learn how to throw errors
Test with asserts
Here is Assert function that will print both the result and failed expression
// assert.niva
type Assert 
constructor Assert that::Any equals::Any -> Unit! = [
  a = Compiler getName: 1
  b = Compiler getName: 2
  that != equals => [
    Error throwWithMessage: "Assertion failed: $a' != $b' ($that != $equals)"
  ]
]
// main.niva
type Data
    numbers::List::Int
/// returns list of numbers incremented by one
Data inc = 
    numbers map: [it inc]
Test simple -> Unit! = [
    data = Data numbers: {1 2 3 4}
    expected = {2 3 4 5}
    actual = data inc
    
    Assert that: actual equals: expected
]
niva test

Lets break the test
Test fail -> Unit! = [
    data = Data numbers: {1 2 3 4}
    Assert that: data numbers equals: {2 3 4 5}
]

Last modified: 16 November 2024