Module:ja-ruby/testcases

local m = require'Module:ja-ruby' local t = require'Module:UnitTests'

function t:test_ruby local function nw(s) return self.frame:extensionTag('nowiki', s) end local function o2s(o) if o == nil then return '' end local function table_to_string(t1) local result = {'{'} for k, v in pairs(t1) do				table.insert(result, '["')				table.insert(result, k)				table.insert(result, '"]=') if type(v) == 'string' then table.insert(result, '"')					table.insert(result, nw(v))					table.insert(result, '"') elseif type(v) == 'table' then table.insert(result, table_to_string(v)) else table.insert(result, tostring(v)) end table.insert(result, ',') end table.insert(result, '}') return table.concat(result) end return '' .. table_to_string(o) .. '' end local function _f(s1, s2, sr, o) return t:equals('' .. nw(s1) .. '' .. nw(s2) .. '' .. o2s(o), m.to_wiki(m.parse_text(s1, s2, o), o), sr, {nowiki = true}) end local function _ff(s1, sr, o) return t:equals('' .. nw(s1) .. '' .. o2s(o), m.to_wiki(m.parse_markup(s1, o), o), sr, {nowiki = true}) end local function _f3(args, sr) return t:equals(o2s(args), m.ruby_auto(args), sr, {nowiki = true}) end _f(		'推%理%小%説',		'すい%り% しょう%せつ',		' 推(すい) 理(<rt>り</rt><rp>)</rp>  小<rp>(</rp><rt>しょう</rt><rp>)</rp>  説<rp>(</rp><rt>せつ</rt><rp>)</rp> ') _f(		'アラン・ポーの推理 小説',		'あらん ぽー の すいり しょうせつ',		'アラン・ポーの 推理<rp>(</rp><rt>すいり</rt><rp>)</rp> 小説<rp>(</rp><rt>しょうせつ</rt><rp>)</rp> ') _f(		'アラン・ポーの推理 小説',		'あらん ぽー の すいり しょうせつ',		'アラン・ポーの 推理<rp>(</rp><rt>すいり</rt><rp>)</rp> 小説<rp>(</rp><rt>しょうせつ</rt><rp>)</rp> ',		{space = 'all'}) _f(		'(This is a pen.)',		'(ディス イズ ア ペン.)',		'( This<rp>(</rp><rt>ディス</rt><rp>)</rp> is<rp>(</rp><rt>イズ</rt><rp>)</rp>  a<rp>(</rp><rt>ア</rt><rp>)</rp>  pen<rp>(</rp><rt>ペン</rt><rp>)</rp> .)') _f(		'[This is a pen.]',		'[ディス イズ ア ペン.]',		'[ This<rp>(</rp><rt>ディス</rt><rp>)</rp> is<rp>(</rp><rt>イズ</rt><rp>)</rp>  a<rp>(</rp><rt>ア</rt><rp>)</rp>  pen<rp>(</rp><rt>ペン</rt><rp>)</rp> .]',		{space = 'none'}) _f(		'(This is %a% pen.)',		'(ディス イズ %ア% ペン.)',		'( This<rp>(</rp><rt>ディス</rt><rp>)</rp> is<rp>(</rp><rt>イズ</rt><rp>)</rp>  a<rp>(</rp><rt>ア|ア</rt><rp>)</rp>  pen<rp>(</rp><rt>ペン</rt><rp>)</rp> .)',		{allow_ruby_link = true}) _f(		'自業自得',		'You deserve it',		' 自業自得<rp>(</rp><rt>You deserve it</rt><rp>)</rp> ',		{allow_ruby_link = true}) _f(		'駄洒落&駄洒落',		'だじゃれ&だじゃれ',		' 駄洒落<rp>(</rp><rt>だじゃれ</rt><rp>)</rp> & 駄洒落<rp>(</rp><rt>だじゃれ</rt><rp>)</rp> ') _f(		'用ゐる',		'もちいる',		' 用ゐ<rp>(</rp><rt>もちい</rt><rp>)</rp> る',		{try = 'force'}) _f(		'スイーツ(笑)',		'スイーツ かっこ わらい',		'スイーツ (笑)<rp>(</rp><rt>かっこわらい</rt><rp>)</rp> ',		{try = 'force'}) _f(		'阿 呆',		'阿 b呆',		'阿 <rp>(</rp><rt>b</rt><rp>)</rp> 呆',		{try = 'force'}) _f(		'喋る人%形',		'しゃべる にん%ぎょう',		' 喋<rp>(</rp><rt>しゃべ</rt><rp>)</rp> る 人<rp>(</rp><rt>にん</rt><rp>)</rp> 形<rp>(</rp><rt>ぎょう</rt><rp>)</rp> ',		{break_link = true}) _ff(table.concat({ 'apple[ba](βα)nana', 'apple[ba](βα)nana', 'appleba](βα)nana', }, ', '), table.concat({ 'apple ba<rp>(</rp><rt>βα</rt><rp>)</rp> nana', 'apple ba<rp>(</rp><rt>βα</rt><rp>)</rp> nana', 'apple ba<rp>(</rp><rt>βα</rt><rp>)</rp> nana', }, ', '))	_f3({		markup = 'Apple[banana](Citrus)',		target = 'markup',		options = {break_link = true}	}, 'Applebanana](Citrus)') end

return {show = function(frame) return t:run(frame) end}