Jump to content
Wikipedia The Free Encyclopedia

Module:Text/testcases

From Wikipedia, the free encyclopedia
This is the test cases page for the module Module:Text. Results of the test cases.
 localp=require('Module:UnitTests')
 localText=require('Module:Text').Text()
 localTextSandbox=require('Module:Text/sandbox').Text()

 -- Tests re-written in Lua from https://de.wikipedia.org/wiki/Wikipedia:Lua/Modul/Text/Test version 198988523

 functionp:charTester(m,o)
 self:equals('',o.char(),'')
 self:equals('<code>{65,104,97}</code>',o.char({65,104,97}),'Aha')
 self:equals('<code>{"65",104,97}</code>',o.char({"65",104,97}),'Aha')
 self:equals('<code>{98,108,97},2</code>',o.char({98,108,97},2),'blabla')
 self:equals('<code>{"something"}</code>',mw.ustring.match(o.char({'something'}),"error"),"error")
 self:equals('<code>"something",1,true</code>',o.char('something',1,true),'')
 self:equals('<code>{7,8,9}</code>',mw.ustring.match(Text.char({7,8,9}),"error"),"error")
 self:preprocess_equals_many('{{#invoke:'..m..'|char|','}}',{
 {'65 104 97','Aha'},
 {'98 108 97|*=2','blabla'},
 {'something|errors=0',''}})
 end

 functionp:testChar()
 self:charTester('Text',Text)
 end

 functionp:testCharSandbox()
 self:charTester('Text/sandbox',TextSandbox)
 end

 functionp:concatParamsTester(m,o)
 self:equals('',o.concatParams(),'')
 self:equals('<code>{}</code>',o.concatParams({}),'')
 self:equals('<code>A</code>',o.concatParams('A'),'A')
 self:equals('<code>{"A"}</code>',o.concatParams({'A'}),'A')
 self:equals('<code>{"A","B","C"}</code>',o.concatParams({'A','B','C'}),'A|B|C',{nowiki=1})
 self:equals('<code>{"A","B","C"},"-"</code>',o.concatParams({'A','B','C'},'-'),'A-B-C')
 self:equals('<code>{"1","2","3"},nil,"%.2f"</code>',o.concatParams({'1','2','3'},nil,'%.2f'),'1.00|2.00|3.00',{nowiki=1})
 self:preprocess_equals('{{#invoke:'..m..'|concatParams|1|2|3|separator=:|format=%.2f}}',
 '1.00:2.00:3.00')
 end

 functionp:testConcatParams()
 self:concatParamsTester('Text',Text)
 end

 functionp:testConcatParamsSandbox()
 self:concatParamsTester('Text/sandbox',TextSandbox)
 end

 functionp:listToTextTester(m,o)
 self:equals('',o.listToText(),'')
 self:equals('<code>{}</code>',o.listToText({}),'')
 self:equals('<code>A</code>',o.listToText('A'),'A')
 self:equals('<code>{"A"}</code>',o.listToText({'A'}),'A')
 self:equals('<code>{"A","B","C"}</code>',o.listToText({'A','B','C'}),'A, B and C')
 self:equals('<code>{"1","2","3"},"%.2f"</code>',o.listToText({'1','2','3'},'%.2f'),'1.00, 2.00 and 3.00')
 self:preprocess_equals('{{#invoke:'..m..'|listToText|1|2|3|format=%.2f}}',
 '1.00, 2.00 and 3.00')
 end

 functionp:testListToText()
 self:listToTextTester('Text',Text)
 end

 functionp:testListToTextSandbox()
 self:listToTextTester('Text/sandbox',TextSandbox)
 end

 functionp:containsCJKTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code>'..arg..'</code>',o.containsCJK(arg),expected)
 end
 self:equals('',o.containsCJK(),false)
 singleTest('Draco Dormiens Nunquam Titillandus',false)
 singleTest('Никогда не щекочи спящего дракона',false)
 singleTest('सोए शेर को न जगाओ',false)
 singleTest('永远不要惊醒卧龙',true)
 singleTest('眠っているドラゴンをくすぐることはありません',true)
 singleTest('잠자는 용을 간지럽히지 마십시오',true)
 end

 functionp:testContainsCJK()
 self:containsCJKTester(Text)
 end

 functionp:testContainsCJKSandbox()
 self:containsCJKTester(TextSandbox)
 end

 functionp:getPlainTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code><nowiki>'..arg..'</nowiki></code>',
 o.getPlain(arg),expected)
 end
 singleTest('a and b','a and b')
 singleTest('a<!--comment-->b','ab')
 singleTest(' <!--comment-->hello, world<!--comment 2--> ',' hello, world ')
 singleTest('a <nowiki>b</nowiki> c','a b c')
 singleTest("'''a'''","a")
 singleTest("''b''","b")
 singleTest("'''a''' and ''b''","a and b")
 singleTest("a&nbsp;and&nbsp;b","a and b")
 singleTest("'''a'' and '''b''","a and b")
 singleTest("a<!--I am an unclosed comment","a")
 singleTest("'''unclosed bold","unclosed bold")
 singleTest("<!-- hello -- -->'''a'''&nbsp;<!--world-->''<nowiki>b</nowiki>''","a b")
 singleTest("<b>a</b>&nbsp;'''b'''<!-- hello -- world -->,&nbsp;<div style='font-size:100%;'>c</div>","a b, c")
 end

 functionp:testGetPlain()
 self:getPlainTester(Text)
 end

 functionp:testGetPlainSandbox()
 self:getPlainTester(TextSandbox)
 end

 functionp:removeDelimitedTester(o)
 self:equals('comment',o.removeDelimited('a<!--comment-->b','<!--','-->'),'ab')
 self:equals('2 comments',o.removeDelimited(' <!--comment-->hello, world<!--comment 2--> ','<!--','-->'),' hello, world ')
 self:equals('ref',o.removeDelimited('in foo.<ref name=foo>{{cite web|title=Title|url=https://www.example.com}}</ref>','<ref','</ref>'),'in foo.')
 end

 functionp:testRemoveDelimited()
 self:removeDelimitedTester(Text)
 end

 functionp:testRemoveDelimitedSandbox()
 self:removeDelimitedTester(TextSandbox)
 end

 functionp:isLatinTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code>'..arg..'</code>',o.isLatinRange(arg),expected)
 end
 self:equals('',o.isLatinRange(),true)
 singleTest('abcd',true)
 singleTest('Ça ira',true)
 singleTest('α – Ω',false)
 singleTest('a日本d',false)
 end

 functionp:testIsLatin()
 self:isLatinTester(Text)
 end

 functionp:testIsLatinSandbox()
 self:isLatinTester(TextSandbox)
 end

 functionp:isQuoteTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code>'..arg..'</code>',o.isQuote(arg),expected)
 end
 self:equals('',o.isQuote(),false)
 singleTest('"',true)
 singleTest('日',false)
 singleTest('abc"',false)
 end

 functionp:testIsQuote()
 self:isQuoteTester(Text)
 end

 functionp:testIsQuoteSandbox()
 self:isQuoteTester(TextSandbox)
 end

 functionp:quoteTester(o)
 self:equals('',o.quote(),'""')
 self:equals('<code>abcd</code>',o.quote('abcd'),'"abcd"')
 self:equals('<code>"abcd"</code>',o.quote('"abcd"'),'""abcd""')
 self:equals('fr',o.quote('abcd','fr'),'«&#160;abcd&#160;»')
 self:equals('fr2',o.quote('abcd','fr',2),'‹&#160;abcd&#160;›')
 end

 functionp:testQuote()
 self:quoteTester(Text)
 end

 functionp:testQuoteSandbox()
 self:quoteTester(TextSandbox)
 end

 functionp:quoteUnquotedTester(o)
 self:equals('',o.quoteUnquoted(),'')
 self:equals('<code>abcd</code>',o.quoteUnquoted('abcd'),'"abcd"')
 self:equals('<code>"abcd"</code>',o.quoteUnquoted('"abcd"'),'"abcd"')
 self:equals('fr',o.quoteUnquoted('abcd','fr'),'«&#160;abcd&#160;»')
 self:equals('fr2',o.quoteUnquoted('abcd','fr',2),'‹&#160;abcd&#160;›')
 end

 functionp:testQuoteUnquoted()
 self:quoteUnquotedTester(Text)
 end

 functionp:testQuoteUnquotedSandbox()
 self:quoteUnquotedTester(TextSandbox)
 end

 functionp:removeDiacriticsTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code>'..arg..'</code>',o.removeDiacritics(arg),expected)
 end
 self:equals('',o.removeDiacritics(),'')
 singleTest('abcd','abcd')
 singleTest('âbçdé','abcde')
 singleTest('a日本d','a日本d')
 end

 functionp:testRemoveDiacritics()
 self:removeDiacriticsTester(Text)
 end

 functionp:testRemoveDiacriticsSandbox()
 self:removeDiacriticsTester(TextSandbox)
 end

 functionp:sentenceTerminatedTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code><nowiki>'..arg..'</nowiki></code>',
 o.sentenceTerminated(arg),expected)
 end
 singleTest('Hello',false)
 singleTest('(Hello)',false)
 singleTest('Hello.',true)
 singleTest('„Deutsche"',false)
 singleTest('„Deutsche?"',true)
 singleTest('"English?"',true)
 singleTest('[[Hello!]]',true)
 end

 functionp:testSentenceTerminated()
 self:sentenceTerminatedTester(Text)
 end

 functionp:testSentenceTerminatedSandbox()
 self:sentenceTerminatedTester(TextSandbox)
 end

 functionp:ucFirstAllTester(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code>'..tostring(arg)..'</code>',o.ucfirstAll(arg),expected)
 end
 self:equals('',o.ucfirstAll(),'')
 singleTest(25,'25')
 singleTest('Help test me','Help Test Me')
 singleTest('an der Schönen','An Der Schönen')
 singleTest('an der Schönen &lauen','An Der Schönen &Lauen')
 self:equals('HTML ndash',o.ucfirstAll('an der Schönen &lauen donau &ndash; X y z'),
 'An Der Schönen &amp;Lauen Donau '..mw.text.decode('&ndash;',true)..' X Y Z')
 self:equals('HTML nbsp',o.ucfirstAll('a&nbsp;b'),'A&nbsp;B')
 self:equals('many HTML',o.ucfirstAll("&amp;&lt;&gt;&nbsp;&#8201;&#8204;&#8205;&#8206;&#8207;"),
 '&amp;&lt;&gt;&nbsp;'..mw.text.decode("&#8201;&#8204;&#8205;&#8206;&#8207;"))
 end

 functionp:testUCFirstAll()
 self:ucFirstAllTester(Text)
 end

 functionp:testUCFirstAllSandbox()
 self:ucFirstAllTester(TextSandbox)
 end


 functionp:uprightNonLatin(o)
 localfunctionsingleTest(arg,expected)
 self:equals('<code>'..arg..'</code>',o.uprightNonlatin(arg),expected,{nowiki=1})
 end
 singleTest('abc','abc')
 singleTest('abc ','abc ')
 singleTest('Musṭafah','Musṭafah')
 singleTest('μm','μm')
 singleTest('1 α-particle','1 α-particle')
 singleTest('Method 3α','Method 3α')
 singleTest('ΣΨΩ',"<span dir='auto' style='font-style:normal'>ΣΨΩ</span>")
 singleTest('abcΣΨΩxyz',
 "abc<span dir='auto' style='font-style:normal'>ΣΨΩ</span>xyz")
 singleTest('abЩyz',"ab<span dir='auto' style='font-style:normal'>Щ</span>yz")
 singleTest('Войната 1915 година. Втора Македония',
 "<span dir='auto' style='font-style:normal'>Войната 1915 година. Втора Македония</span>")
 singleTest('a日本d',"a<span dir='auto' style='font-style:normal'>日本</span>d")
 end

 functionp:testUprightNonLatin()
 self:uprightNonLatin(Text)
 end

 functionp:testUprightNonLatinSandbox()
 self:uprightNonLatin(TextSandbox)
 end

 functionp:exportTester(m)
 self:preprocess_equals_many('{{#invoke:'..m..'|','}}',{
 {'containsCJK|a',""},
 {'containsCJK|日',"1"},
 {'isLatinRange|日',""},
 {'isLatinRange|a',"1"},
 {'isQuote|日',""},
 {'isQuote|„',"1"},
 {'sentenceTerminated|日',""},
 {'sentenceTerminated|a.',"1"},
 {'getPlain|a',"a"},
 {'removeDiacritics|a',"a"},
 {'ucfirstAll|a',"A"},
 {'uprightNonlatin|a',"a"}}
 )
 end

 functionp:testExport()
 self:exportTester('Text')
 end

 functionp:testExportSandbox()
 self:exportTester('Text/sandbox')
 end

 functionp:splitTester(m,o)
 self:equals_deep('"?a?b?c?d?e?f?", "c"',o.split("?a?b?c?d?e?f?","c"),mw.text.split("?a?b?c?d?e?f?","c"))
 self:equals_deep('"?a?b?c?d?e?f?", "?"',o.split("?a?b?c?d?e?f?","?"),mw.text.split("?a?b?c?d?e?f?","?"))
 self:equals_deep('"?a?b?c?d?e?f?", ""',o.split("?a?b?c?d?e?f?",""),mw.text.split("?a?b?c?d?e?f?",""))
 self:equals_deep('"?a?b?c?d?e?f?", "z"',o.split("?a?b?c?d?e?f?","z"),mw.text.split("?a?b?c?d?e?f?","z"))
 self:equals_deep('"?a?b?c?d?e?f?", "[bdf]"',o.split("?a?b?c?d?e?f?","[bdf]"),mw.text.split("?a?b?c?d?e?f?","[bdf]"))
 self:equals_deep('"?a?b?c?d?e?f?", "[bdf]", true',o.split("?a?b?c?d?e?f?","[bdf]",true),mw.text.split("?a?b?c?d?e?f?","[bdf]",true))
 self:preprocess_equals_many('{{#invoke:'..m..'|split|?a?b?c?|','}}',{
 {'c',mw.text.split("?a?b?c?","c")[1]},
 {'?',mw.text.split("?a?b?c?","?")[1]},
 {'?|false|2',mw.text.split("?a?b?c?","?")[2]},
 {'?|false|-2',mw.text.split("?a?b?c?","?")[#mw.text.split("?a?b?c?","?")-2+1]},
 {'|false|2',mw.text.split("?a?b?c?","")[2]},
 {'z',mw.text.split("?a?b?c?","z")[1]},
 {'[bc]',mw.text.split("?a?b?c?","[bc]")[1]},
 {'[bc]|true',mw.text.split("?a?b?c?","[bc]",true)[1]},
 })
 end

 functionp:testSplit()
 self:splitTester('Text',Text)
 end

 functionp:testSplitSandbox()
 self:splitTester('Text/sandbox',TextSandbox)
 end

 functionp:zipTester(m)
 self:preprocess_equals('{{#invoke:'..m..'|zip|a,b,c|1,2,3|sep=,|isep=-|osep=/}}',"a-1/b-2/c-3")
 self:preprocess_equals('{{#invoke:'..m..'|zip|a b c|x y z|1 2 3|sep=%s+|isep=-|osep=/}}',"a-x-1/b-y-2/c-z-3")
 end

 functionp:testZip()
 self:zipTester('Text')
 end

 functionp:testZipSandbox()
 self:zipTester('Text/sandbox')
 end

 returnp

AltStyle によって変換されたページ (->オリジナル) /