Jump to content

Module:Wd/sandbox/testcases/common

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Janhrach (talk | contribs) at 11:13, 8 June 2024 (bugfix, tabs fix). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
-- This module contains functions used in testcases.
local p = {}

-- generates unit test object to be returned by a specific testcase module
-- first argument: name of the module to test
-- second argument: a table with the structure described in testcaseTable; used for testcases and reference values
function p.generate_unit_tests_module_vs_table(module_to_test, testcases)
    local unit_tests_module = require("Module:UnitTests")
    
    function unit_tests_module:test()
        for _, testcase in ipairs(testcases) do
            input_data = testcase[1]
            expected_output = testcase[2]
            needs_ul = testcase[3]
            
            -- Use <ul> and </ul> tags when needed.
            if needs_ul then
                list_prefix, list_suffix = generate_optional_list_tags(input_data)
            else
                list_prefix, list_suffix = "", ""
            end
            
            unit_tests_module:preprocess_equals(
                list_prefix .. "{{#invoke:" .. module_to_test .. "|" .. input_data .. "}}" .. list_suffix,
                expected_output
            )
        end
    end
    
    return unit_tests_module
end

-- for testing a module against a module
-- first argument: module to test
-- second argument: module to be used for correct outputs
-- third argument: a table with the structure described in testcaseTable; reference values are ignored
function p.generate_unit_tests_module_vs_module(module_to_test, reference_module, testcases)
    local unit_tests_module = require("Module:UnitTests")
    
    function unit_tests_module:test()
        for _, testcase in ipairs(testcases) do
            input_data = testcase[1]
            needs_ul = testcase[3]
            
            -- Use <ul> and </ul> tags when needed.
            if needs_ul then
                list_prefix, list_suffix = generate_optional_list_tags(input_data)
            else
                list_prefix, list_suffix = "", ""
            end
            
            unit_tests_module:preprocess_equals_preprocess(
                list_prefix .. "{{#invoke:" .. module_to_test .. "|" .. input_data .. "}}" .. list_suffix,
                list_prefix .. "{{#invoke:" .. reference_module .. "|" .. input_data .. "}}" .. list_suffix
            )
        end
    end
    
    return unit_tests_module
end

return p