-- 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 reference values
function p.generate_unit_tests_module_vs_table(module_to_test, inputs_and_outputs)
	local unit_tests_module = require("Module:UnitTests")
    
    function unit_tests_module:test()
	    unit_tests_module:preprocess_equals_many(
	    	"{{#invoke:" .. module_to_test .. "|",
	    	"}}",
		    inputs_and_outputs
	    )
    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: inputs for the modules
function p.generate_unit_tests_module_vs_module(module_to_test, reference_module, inputs)
    local unit_tests_module = require("Module:UnitTests")
    
    function unit_tests_module:test()
	    unit_tests_module:preprocess_equals_preprocess_many(
	    	"{{#invoke:" .. module_to_test .. "|",
	    	"}}",
	    	"{{#invoke:" .. reference_module .. "|",
	    	"}}",
		    inputs
	    )
    end
    
    return unit_tests_module
end

-- extracts test module inputs from a table with the structure described in testcaseTable into a table suitable for preprocess_equals_preprocess_many
function p.format_module_inputs_for_preprocess_equals_preprocess_many(input_table)
	output_table = {}
	
	for i, j in ipairs(input_table) do
		output_table[i] = {j[1]}
	end
	
	return output_table
end

return p
"https://si.wikipedia.org/w/index.php?title=Module:Wd/sandbox/testcases/common&oldid=610677" වෙතින් සම්ප්‍රවේශනය කෙරිණි