モジュール:学校コード検査/testcases
表示
これはモジュール「モジュール:学校コード検査」のテストケースページです。テストケースの結果を参照してください。 |
local p = require('Module:UnitTests')
function p:test_live()
self:preprocess_equals_many('{{#invoke:学校コード検査|Main|', '}}', {
{'', ''},
{' ', ''},
{'X012345678912', '[[Category:Infoboxに不備のある学校記事]]'},
{'F113110102700', 'F113110102700'}, -- 東京大学
{'D114310000222', 'D114310000222'}, -- 慶應義塾高等学校
{'H228310000663', 'H228310000663'}, -- 宝塚音楽学校
{'H109310000551', '[[Category:Infoboxに不備のある学校記事]]'}, -- CITY FOOTBALL ACADEMY
{'E201199999991', '[[Category:Infoboxに不備のある学校記事]]'}, -- 存在しない学校種
{'A100199999992', '[[Category:Infoboxに不備のある学校記事]]'}, -- 存在しない都道府県番号
{'A148199999996', '[[Category:Infoboxに不備のある学校記事]]'}, -- 存在しない都道府県番号
{'A101499999995', '[[Category:Infoboxに不備のある学校記事]]'}, -- 存在しない設置区分
{'A101100000004', '[[Category:Infoboxに不備のある学校記事]]'}, -- 学校番号の先頭が0
{'F11311010270', '[[Category:Infoboxに不備のある学校記事]]'}, -- 桁数が不足
{'F1131101027000', '[[Category:Infoboxに不備のある学校記事]]'}, -- 桁数が過剰
{'F113110102709', '[[Category:Infoboxに不備のある学校記事]]'}, -- 検査数字が合わない
}, {nowiki=1})
end
function p:test_sandbox()
self:preprocess_equals_many('{{#invoke:学校コード検査/sandbox|main|', '}}', {
{'', 'failed'},
{' ', 'failed'},
{'X012345678912', 'failed'},
{'F113110102700', ''}, -- 東京大学
{'D114310000222', ''}, -- 慶應義塾高等学校
{'H228310000663', ''}, -- 宝塚音楽学校
{'H109310000551', 'failed'}, -- CITY FOOTBALL ACADEMY
{'H109310000551 | edition = 202305', ''},
{'E201199999991', 'failed'}, -- 存在しない学校種
{'A100199999992', 'failed'}, -- 存在しない都道府県番号
{'A148199999996', 'failed'}, -- 存在しない都道府県番号
{'A101499999995', 'failed'}, -- 存在しない設置区分
{'A101100000004', 'failed'}, -- 学校番号の先頭が0
{'F11311010270', 'failed'}, -- 桁数が不足
{'F1131101027000', 'failed'}, -- 桁数が過剰
{'F113110102709', 'failed'}, -- 検査数字が合わない
}, {nowiki=1})
end
-- 編集画面のデバッグコンソールで使用するための関数
function p.calcCheckDigit(id)
if not id:match('^[A-H]%d%d%d%d%d%d%d%d%d%d%d%d?$') then
error('異常なフォーマット')
end
local sumDigits = function(num)
return (num > 9) and (1 + num % 10) or num
end
local temp = sumDigits((id:byte(1) - 0x40) * 2)
for i = 2, 12 do
temp = temp + sumDigits(tonumber(id:sub(i, i)) * (1 + i % 2))
end
return (10 - (temp % 10)) % 10
end
return p