Toggle menu
15
236
81
27.8K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 06:26, 14 February 2025 by Prd (talk | contribs)

This is the documentation page for Module:UnitTests

UnitTests provides a unit test facility that can be used by other scripts using require. Following is an example:

-- Unit tests for [[Module:Bananas]]. Click talk page to run tests.
local p = require('Module:UnitTests')

function p:test_hello()
    self:preprocess_equals('{{#invoke:Bananas| hello}}', 'Hello World!')
end

return p

This would be executed with {{#invoke: Bananas/testcases | run_tests}}. Test methods like test_hello above must begin with "test".

Methods

run_tests

  • run_tests - Runs all tests. Normally used on talk page of unit tests.
    {{#invoke:Bananas/testcases|run_tests}}
  • If differs_at=1 is specified, a column will be added showing the first character position where the expected and actual results differ.
<includeonly>
[[Category:Modules]]</includeonly>
<noinclude>
[[Category:Module documentation pages]]</noinclude>

    {{#invoke:Bananas/testcases|run_tests|differs_at=1}}

preprocess_equals

  • preprocess_equals(text, expected, options) - Gives a piece of wikitext to preprocess and an expected resulting value. Scripts and templates can be invoked in the same manner they would be in a page.
    self:preprocess_equals('{{#invoke:Bananas | hello}}', 'Hello, world!',{nowiki=1})

preprocess_equals_many

  • preprocess_equals_many(prefix, suffix, cases, options) - Performs a series of preprocess_equals() calls on a set of given pairs. Automatically adds the given prefix and suffix to each text.
    self:preprocess_equals_many('{{#invoke:BananasArgs | add |', '}}', {
        {'2|3', '5'},
        {'-2|2', '0'},
    },{nowiki=1})

preprocess_equals_preprocess

  • preprocess_equals_preprocess(text, expected, options) - Gives two pieces of wikitext to preprocess and determines if they produce the same value. Useful for comparing scripts to existing templates.
    self:preprocess_equals_preprocess('{{#invoke:Bananas | hello}}', '{{Hello}}',{nowiki=1})

preprocess_equals_preprocess_many

  • preprocess_equals_preprocess_many(prefix, suffix, cases, options) - Performs a series of preprocess_equals_preprocess() calls on a set of given pairs. The prefix/suffix supplied for both arguments is added automatically. If in any case the second part is not specified, the first part will be used.
    self:preprocess_equals_preprocess_many('{{#invoke:Foo | spellnum |', '}}', '{{spellnum', '}}', {
        {'2'}, -- equivalent to {'2','2'},
        {'-2', '-2.0'},
    },{nowiki=1})

equals

  • equals(name, actual, expected, options) - Gives a computed value and the expected value, and checks if they are equal according to the == operator. Useful for testing modules that are designed to be used by other modules rather than using #invoke.
    self:equals('Simple addition', 2 + 2, 4,{nowiki=1})

equals_deep

  • equals_deep(name, actual, expected, options) - Like equals, but handles tables by doing a deep comparison. Neither value should contain circular references, as they are not handled by the current implementation and may result in an infinite loop.
    self:equals_deep('Table comparison', createRange(1,3), {1,2,3},{nowiki=1})

See also