Skip to content

Assertions Reference

The leste.assertions module provides ready-made assertions with clearer default failure messages than Lua's built-in assert.

local Assertions = require("leste.assertions")

Every function accepts an optional message as its last argument, used instead of the default failure message.

Boolean checks

Assertions.assert(condition, message?)

Fails unless condition is truthy.

Assertions.notAssert(condition, message?)

Fails unless condition is falsy.

Equality

Assertions.equal(expected, actual, message?)

Fails unless expected == actual.

Assertions.notEqual(expected, actual, message?)

Fails unless expected ~= actual.

Strings

Assertions.strContains(haystack, needle, message?)

Fails unless haystack contains needle (checked with a plain, non-pattern search, so needles with %, ., etc. are matched literally).

Assertions.strNotContains(haystack, needle, message?)

Fails unless haystack doesn't contain needle.

Tables — keys

Assertions.tableHasKey(tbl, key, message?)

Fails unless tbl[key] is not nil.

Assertions.tableNotHasKey(tbl, key, message?)

Fails unless tbl[key] is nil.

Tables — values

Assertions.tableContains(tbl, value, message?)

Fails unless some value in tbl equals value (checked with == over every entry, via pairs).

Assertions.tableNotContains(tbl, value, message?)

Fails unless no value in tbl equals value.

Full example

local Leste = require("leste.leste")
local Assertions = require("leste.assertions")

Leste.it("demonstrates the Assertions module", function()
    Assertions.assert(1 + 1 == 2)
    Assertions.notAssert(1 + 1 == 3)

    Assertions.equal(2, 1 + 1)
    Assertions.notEqual(3, 1 + 1)

    Assertions.strContains("Hello, World!", "World")
    Assertions.strNotContains("Hello, World!", "Lua")

    local user = { name = "Ada", age = 36 }
    Assertions.tableHasKey(user, "name")
    Assertions.tableNotHasKey(user, "email")
    Assertions.tableContains(user, "Ada")
    Assertions.tableNotContains(user, "Grace")
end)