モジュール:Citation/CS-ja/testcases
表示
< モジュール:Citation | CS-ja
これはモジュール「モジュール:Citation/CS-jaのテストケースページです。テストケースの結果を参照してください。 |
local p = require('Module:UnitTests')
local cfg = require('Module:Citation/CS-ja/Configuration/sandbox')
local utilities = require('Module:Citation/CS1/Utilities/sandbox')
local validation = require('Module:Citation/CS1/Date validation/sandbox')
utilities.set_selected_modules(cfg)
validation.set_selected_modules(cfg, utilities)
local lang = mw.language.getContentLanguage()
local lang2 = mw.language.new('en')
local format_date_tests = {
{ lang:formatDate('Y年Fj日'), ja = 'T', dmy = lang2:formatDate('j F Y'), mdy = lang2:formatDate('F j, Y'), ymd = lang2:formatDate('Y-m-d') },
{ lang:formatDate('Y-m-d'), ja = 'T', dmy = lang2:formatDate('j F Y'), mdy = lang2:formatDate('F j, Y'), ymd = lang2:formatDate('Y-m-d') },
{ lang2:formatDate('F j, Y'), ja = 'T', dmy = lang2:formatDate('j F Y'), mdy = lang2:formatDate('F j, Y'), ymd = lang2:formatDate('Y-m-d') },
{ lang2:formatDate('M j, Y'), ja = 'T', dmy = lang2:formatDate('j F Y'), mdy = lang2:formatDate('F j, Y'), ymd = lang2:formatDate('Y-m-d') },
{ lang2:formatDate('j F Y'), ja = 'T', dmy = lang2:formatDate('j F Y'), mdy = lang2:formatDate('F j, Y'), ymd = lang2:formatDate('Y-m-d') },
{ lang2:formatDate('j M Y'), ja = 'T', dmy = lang2:formatDate('j F Y'), mdy = lang2:formatDate('F j, Y'), ymd = lang2:formatDate('Y-m-d') },
{ '2023年12月15日', ja = 'T', dmy = '15 December 2023', mdy = 'December 15, 2023', ymd = '2023-12-15' },
{ '2023-12-15', ja = 'T', dmy = '15 December 2023', mdy = 'December 15, 2023', ymd = '2023-12-15' },
{ '2023年9月1日', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023年09月1日', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023年9月01日', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023年09月01日', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023-09-01', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023-09-1', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023-9-01', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023-9-1', ja = 'T', dmy = '1 September 2023', mdy = 'September 1, 2023', ymd = '2023-09-01' },
{ '2023年9月', ja = 'T', dmy = 'September 2023', mdy = 'September 2023' },
{ '2023年09月', ja = 'T', dmy = 'September 2023', mdy = 'September 2023' },
{ '2023-09', ja = 'T', dmy = 'September 2023', mdy = 'September 2023' },
{ '2023-9', ja = 'T', dmy = 'September 2023', mdy = 'September 2023' },
{ 'September 2023', ja = 'T', dmy = 'September 2023', mdy = 'September 2023' },
{ '2023年', ja = 'T', dmy = '2023', mdy = '2023', ymd = '2023' },
{ '2023', ja = 'T', dmy = '2023', mdy = '2023' },
{
lang:formatDate('Y年12月31日', '+1 years'),
ja = 'T',
dmy = '31 December ' .. lang2:formatDate('Y', '+1 years'),
mdy = 'December 31, ' .. lang2:formatDate('Y', '+1 years'),
ymd = lang2:formatDate('Y-12-31', '+1 years')
}, {
lang:formatDate('Y-12-31', '+1 years'),
ja = 'T',
dmy = '31 December ' .. lang2:formatDate('Y', '+1 years'),
mdy = 'December 31, ' .. lang2:formatDate('Y', '+1 years'),
ymd = lang2:formatDate('Y-12-31', '+1 years')
},
{ '2023-2024', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023–2024', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023年-2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023年–2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023-2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023 – 2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023年 - 2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023年 – 2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023 - 2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{ '2023 – 2024年', ja = '2023年 - 2024年', dmy = '2023–2024', mdy = '2023–2024' },
{
'2023年9月-2024年1月',
dmy = 'September 2023 – January 2024',
mdy = 'September 2023 – January 2024',
ja = '2023年9月 - 2024年1月'
}, {
'2023年9月-10月',
dmy = 'September–October 2023',
mdy = 'September–October 2023',
ja = '2023年9月 - 10月'
}, {
'2023年9月5日-2024年1月1日',
dmy = '5 September 2023 – 1 January 2024',
mdy = 'September 5, 2023 – January 1, 2024',
ja = '2023年9月5日 - 2024年1月1日'
}, {
'2023年9月5日-10月1日',
dmy = '5 September – 1 October 2023',
mdy = 'September 5 – October 1, 2023',
ja = '2023年9月5日 - 10月1日'
}, {
'2023年9月5日-10日',
dmy = '5–10 September 2023',
mdy = 'September 5–10, 2023',
ja = '2023年9月5日 - 10日'
},
{ '2012–13', ja = '2012年 - 2013年', dmy = '2012–2013', mdy = '2012–2013' },
{ '2010-11', ja = '2010年11月', dmy = 'November 2010', mdy = 'November 2010' },
}
local function format_date(value, date_format)
local date_parameters_list = { ['date'] = {val = value} }
local error_list = {}
validation.dates(date_parameters_list, {}, error_list)
if #error_list > 0 then return 'invalid date' end
return validation.reformat_dates(date_parameters_list, date_format) and
date_parameters_list['date'].val
end
function p:test_format_dates_01_ja()
for _, v in ipairs(format_date_tests) do
local case, expected = v[1], v['ja']
if expected == 'T' then
local frame = mw.getCurrentFrame()
local iso_date = frame:expandTemplate{ title = 'ISO dateJA', args = { case } }
local args = { case, isodate = iso_date, defaultdate= case }
expected = frame:expandTemplate{ title = 'Citation/showdate', args = args }
end
self:equals(case, format_date(case, 'ja'), expected or false)
end
end
function p:test_format_dates_02_dmy()
for _, v in ipairs(format_date_tests) do
local case, expected = v[1], v['dmy']
self:equals(case, format_date(case, 'dmy'), expected or false)
end
end
function p:test_format_dates_03_mdy()
for _, v in ipairs(format_date_tests) do
local case, expected = v[1], v['mdy']
self:equals(case, format_date(case, 'mdy'), expected or false)
end
end
function p:test_format_dates_04_ymd()
for _, v in ipairs(format_date_tests) do
local case, expected = v[1], v['ymd']
self:equals(case, format_date(case, 'ymd'), expected or false)
end
end
function p:test_invalid_dates()
local function test(case)
self:equals(case, format_date(case, 'mdy'), 'invalid date')
end
test('9月15日')
test('09月15日')
test('09-15')
test('9-15')
test('2023年9月32日')
test('2023年09月32日')
test('2023-09-32')
test('2023-9-32')
test('2023年13月1日')
test('2023年13月01日')
test('2023-13-01')
test('2023-13-1')
test('2023年2月29日')
test('2023-02-29')
test('2023年9月15日')
test('2023年0月15日')
test('2023年00月15日')
test('2023-00-15')
test('2023-0-15')
test('2023年9月0日')
test('2023年09月00日')
test('2023-09-0')
test('2023-9-0')
test(lang:formatDate('Y年1月1日', '+2 years'))
test(lang:formatDate('Y-01-01', '+2 years'))
test('2024-2023')
test('2024–2023')
test('2024年-2023年')
test('2024年–2023年')
test('2024-2023年')
test('2024–2023年')
test('2024–23')
test('2010–11')
end
return p