Module:Template test case

    From Nonbinary Wiki
    Revision as of 14:34, 21 November 2014 by wikipedia>Mr. Stradivarius (tentative TestCase class syntax)

    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