请输入您要查询的百科知识:

 

词条 Module:Roman/testcases
释义 -- Unit tests for Roman/sandbox. Click talk page to run tests.

local moduleName = 'Roman/sandbox' -- assigning this to a variable as it is later used to generate an #invoke statement.

local mainFuncName = 'main'

local mm = require('Module:' .. moduleName)

local suite = require('Module:UnitTests')

function suite.buildInvocation(funcName, args)

    args = args or {}    local argsClone = mw.clone(args)    -- Build a module invocation equivalent to the args table. Taken from Unsubst.    -- Numbered args first.    local ret = '{{#invoke:' .. moduleName .. '|' .. funcName    for k, v in ipairs(argsClone) do        v = tostring(v)        if string.find(v, '=', 1, true) then            -- likely something like 1=foo=bar, we need to do it as a named arg            break        end        ret = ret .. '|' .. v        argsClone[k] = nil    end    for k, v in pairs(argsClone) do        k = tostring(k)        v = tostring(v)        ret = ret .. '|' .. k .. '=' .. v    end    return ret .. '}}'

end

function suite:getInvokeResult(funcName, args, convertNumber) -- Unless convertNumber is false, the number is converted to a number, if possible, on re-entry to Lua.

    args = args or {}    local invocation = self.buildInvocation(funcName, args)    local result = self.frame:preprocess(invocation)    if convertNumber ~= false and tonumber(result) then        return tonumber(result)    else        return result    end

end

function suite:assertInvokeEquals(expected, funcName, args, convertNumber)

    args = args or {}    local invokeResult = self:getInvokeResult(funcName, args, convertNumber)    self:preprocess_equals(invokeResult, expected)

end

function suite:assertInvokeEqual(funcName, testTable, convertNumber)

    testTable = testTable or {}    local expected = testTable[1]    local args = testTable[2] or {}    self:assertInvokeEquals(expected, funcName, args, convertNumber)

end

function suite:assertInvokeEqualMany(funcName, testTables, convertNumber)

    for i, testTable in ipairs(testTables) do        self:assertInvokeEqual(funcName, testTable, convertNumber)    end

end

function suite:test_genericNumbers()

    local args = {        {'N', {'0'}}, {'I', {'1'}}, {'II', {'2'}}, {'IV', {'4'}}, {'V', {'5'}},        {'VI', {'6'}}, {'VIII', {'8'}}, {'IX', {'9'}}, {'X', {'10'}},        {'XI', {'11'}}, {'XIV', {'14'}}, {'XV', {'15'}}, {'XVI', {'16'}},        {'XIX', {'19'}}, {'XX', {'20'}}, {'XXI', {'21'}}, {'XXIV', {'24'}},        {'XXV', {'25'}}, {'XXVI', {'26'}}, {'XXXIV', {'34'}}, {'XXXV', {'35'}},        {'XXXVIII', {'38'}}, {'XXXIX', {'39'}}, {'XL', {'40'}}, {'XLI', {'41'}},        {'XLIV', {'44'}}, {'XLV', {'45'}}, {'XLIX', {'49'}}, {'L', {'50'}},        {'LXXXVIII', {'88'}}, {'LXXXIX', {'89'}}, {'XC', {'90'}}, {'XCI', {'91'}},        {'XCIV', {'94'}}, {'XCV', {'95'}}, {'XCVIII', {'98'}}, {'XCIX', {'99'}},        {'C', {'100'}}, {'CI', {'101'}}, {'CIV', {'104'}}, {'CV', {'105'}},        {'CIX', {'109'}}, {'CX', {'110'}},        {'MCCXXXIV', {'1234'}},        {'MDCXLVIII', {'1648'}},        {'MMCMXCIX', {'2999'}},        {'MMM', {'3000'}},    }    -- unsure how to test cases with overline    self:assertInvokeEqualMany('main', args)

end

function suite:test_outOfRangeNumbers()

    local args = {        {'N/A', {'5000000'}},        {'N/A', {'5000010'}},        {'N/A', {'3000000000'}},    }    self:assertInvokeEqualMany('main', args)

end

function suite:test_MessageArg()

    local args = {        {'N', {'0', 'too big'}},        {'I', {'1', 'too big'}},        {'V', {'5', 'too big'}},        {'X', {'10', 'too big'}},        {'L', {'50', 'too big'}},        {'C', {'100', 'too big'}},        {'D', {'500', 'too big'}},        {'M', {'1000', 'too big'}},        {'too big', {'5000000', 'too big'}},        {'too big', {'5000010', 'too big'}},        {'too big', {'3000000000', 'too big'}},    }    self:assertInvokeEqualMany('main', args)

end

function suite:test_MessageArgWithFractionArg()

    -- Note, 'fraction=yes' before 'too big' cannot happen with the template    local args = {        {'N', {'0', 'too big', 'fraction=yes'}},        {'I', {'1', 'too big', 'fraction=yes'}},        {'M', {'1000', 'too big', 'fraction=yes'}},        {'too big', {'5000000', 'too big', 'fraction=yes'}},        {'too big', {'5000010', 'too big', 'fraction=yes'}},        {'too big', {'3000000000', 'too big', 'fraction=yes'}},    }    self:assertInvokeEqualMany('main', args)

end

--[[

function suite:test_decimalsBetweenZeroAndOne()

    local args = {        {'»', {'0.0001', '', 'fraction=yes'}},        {'»', {'0.0005', '', 'fraction=yes'}},        {'»', {'0.000578703', '', 'fraction=yes'}},        {'»', {'0.000578704', '', 'fraction=yes'}},        {'℈', {'0.00347222', '', 'fraction=yes'}},        {'℈', {'0.00347223', '', 'fraction=yes'}},        {'ƻ', {'0.007', '', 'fraction=yes'}},        {'Ƨ', {'0.0139', '', 'fraction=yes'}},        {'Ɔ', {'0.02084', '', 'fraction=yes'}},        {'ƧƧ', {'0.0278', '', 'fraction=yes'}},        {'Є', {'0.04167', '', 'fraction=yes'}},        {'•', {'0.08334', '', 'fraction=yes'}},        {'•ЄƧ℈»', {'0.142858', '', 'fraction=yes'}},        {"''':'''", {'0.1667', '', 'fraction=yes'}},        {"''':'''•", {'0.25', '', 'fraction=yes'}},        {"'''::'''", {'0.3333', '', 'fraction=yes'}},        {"''':'''•''':'''", {'0.41666', '', 'fraction=yes'}},        {'S', {0.5, '', 'fraction=yes'}},        {"S''':'''•", {'0.75', '', 'fraction=yes'}},        {"S''':'''•''':'''ЄƧƧƻ℈»»»»", {'0.9999', '', 'fraction=yes'}},    }    self:assertInvokeEqualMany('main', args)

end

--]]--[[

function suite:test_fractionsBetweenZeroAndOne()

    local args = {        {'S', {'1/2', 'hi', 'fraction=yes'}}    }    self:assertInvokeEqualMany('main', args)

end

--]]

return suite

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/22 13:24:48