Module:Template test case: Difference between revisions

From Zoophilia Wiki
Jump to navigationJump to search
meta>Mr. Stradivarius
first draft of the spec for a generalised template test cases module
 
meta>Mr. Stradivarius
tentative TestCase class syntax
Line 1: Line 1:
-- This module provides several methods to generate test cases.
-- This module provides several methods to generate test cases.
local libraryUtil = require('libraryUtil')
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Line 22: Line 25:
--    * heading - a heading to display above the template output.
--    * heading - a heading to display above the template output.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- TestCase class
-------------------------------------------------------------------------------
local TestCase = {}
TestCase.__index = TestCase
function TestCase.new(t)
-- Validate the input
checkTypeForNamedArg('TestCase.new', 'invocation', t.invocation, 'table')
checkTypeForNamedArg('TestCase.new', 'templates', t.templates, 'table')
checkTypeForNamedArg('TestCase.new', 'options', t.options, 'table', true)
t.options = t.options or {}
local obj = setmetatable({}, TestCase)
return obj
end

Revision as of 14:34, 21 November 2014

Documentation for this module may be created at Module:Template test case/doc

-- This module provides several methods to generate test cases.

local libraryUtil = require('libraryUtil')
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg

--------------------------------------------------------------------------------
-- Test case display functions
--
-- Test case display functions produce the wikitext to display the template
-- output for one test case. For example, one function might produce templates
-- aligned horizontally, and another function might produce templates aligned
-- one below the other.
--
-- They are named functions that accept the following parameters:
-- * templates - an array of subtables containing data about each template to be
--     displayed. These subtables can contain the following values:
--     * result - the expanded wikitext from the template.
--     * invocation - the original unexpanded wikitext that the output was
--         generated from. This may be nil if the invocation is not available.
--     * name - the name of the template.
--     * link - a normal wikilink to the template page (displays as
--         "Template:Foo").
--     * braceLink - a wikilink to the template page formatted like the {{tl}}
--         template, i.e. it displays as "{{Foo}}".
--     * heading - a heading to display above the template output.
--------------------------------------------------------------------------------

-------------------------------------------------------------------------------
-- TestCase class
-------------------------------------------------------------------------------

local TestCase = {}
TestCase.__index = TestCase

function TestCase.new(t)
	-- Validate the input
	checkTypeForNamedArg('TestCase.new', 'invocation', t.invocation, 'table')
	checkTypeForNamedArg('TestCase.new', 'templates', t.templates, 'table')
	checkTypeForNamedArg('TestCase.new', 'options', t.options, 'table', true)
	t.options = t.options or {}

	local obj = setmetatable({}, TestCase)
	return obj
end