1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
require 'rubyunit'
require 'aswiki/scanner.rb'
require 'aswiki/config.rb'
class TestAsWiki__Scanner < RUNIT::TestCase
def test_next_token
t = [
["=== ", [[:HN_BEGIN, "==="],[:SPACE, " "],]],
["AA:BB:CC", [[:OTHER, "AA:BB:CC"]]],
["hoge ", [[:WORD, "hoge"],[:SPACE, " "]]],
["foo" , [[:WORD, 'foo']]],
["a http://f.b.jp:80/cgi-bin/tiki.cgi?c=v",[[:WORD, 'a'],
[:SPACE, ' '],[:URI, 'http://f.b.jp:80/cgi-bin/tiki.cgi?c=v']]],
["a mailto:hoge@foo.bar",[[:WORD, 'a'],
[:SPACE, ' '],[:URI, 'mailto:hoge@foo.bar']]],
["#begin foo", [[:PLUGIN_BEGIN, '#begin foo']]],
["#end ", [[:PLUGIN_END, '#end ']]],
["#plugin", [[:PLUGIN, "#plugin"]]],
[".", [[:ENDPERIOD, '.']]],
[". ", [[:OTHER, '.'],[:SPACE, ' ']]],
["{{{", [[:PRE_BEGIN, '{{{']]],
["}}}", [[:PRE_END, '}}}']]],
[" {{{", [[:SPACE, " "], [:ESCAPE_BEGIN,'{{'],[:OTHER,'{'],]],
["|| ||", [[:TABLE_BEGIN, '||'],[:SPACE, " "], [:TABLE_END,'||']]],
["WikiName", [[:WIKINAME1,"WikiName"]]],
["[[wikiname]]", [[:WIKINAME2,"[[wikiname]]"]]],
["hoge:WikiName", [[:INTERWIKINAME,"hoge:WikiName"]]],
["[http://hoge.foo/ foolink]",
[[:MOINHREF, '[http://hoge.foo/ foolink]']]],
["'' ''", [[:EM, "''"],[:SPACE, ' '],[:EM, "''"]]],
["'''a'''", [[:STRONG, "'''"],[:WORD, 'a'],[:STRONG, "'''"]]],
["''a'' '''b'''", [[:EM, "''"],[:WORD, 'a'],[:EM, "''"],
[:SPACE, ' '],[:STRONG, "'''"],[:WORD, 'b'],[:STRONG, "'''"]]],
# [" 1. hoge", [ [:OL, ' 1.'],[:SPACE, ' '],[:WORD, 'hoge']]],
# ["\n 1. ", [ [:BLANK,""],[:EOL,"\n"],[:OL, ' 1.'],[:SPACE, ' ']]],
[" (1) hoge", [ [:OL, ' (1)'],[:SPACE, ' '],[:WORD, 'hoge']]],
["\n (1) ", [ [:BLANK,""],[:EOL,"\n"],[:OL, ' (1)'],[:SPACE, ' ']]],
[" * hoge", [ [:UL, ' *'],[:SPACE, ' '],[:WORD, 'hoge']]],
[" ** hoge", [[:UL, ' *'],[:OTHER, '*'],[:SPACE, ' '],[:WORD, 'hoge']]],
[" + hoge", [ [:DL, ' + '],[:WORD, 'hoge']]],
[":ABC", [[:WORD, ":ABC"]]],
[" ** [http://www/ www]", [[:UL, " *"],[:OTHER, '*'],[:SPACE, ' '],[:MOINHREF, "[http://www/ www]"] ]],
["{[}]", [[:OTHER, "{"],[:OTHER, "["],[:OTHER, "}"],[:OTHER, "]"],]],
["ܸWikiName", [[:OTHER, "ܸ"], [:WIKINAME1, "WikiName"]]],
["WikiName", [[:WIKINAME1,"WikiName"],[:OTHER, ""]]],
["ܸ[[foo]]", [[:OTHER, "ܸ"], [:WIKINAME2, "[[foo]]"]]],
["@@@[[foo]]", [[:OTHER, "@"], [:OTHER, "@"], [:OTHER, "@"], [:WIKINAME2, "[[foo]]"]]],
# ["a\na\n", [[:WORD,'a'],[:SPACE,"\n"],[:WORD,'a'],[:SPACE,"\n"]]]
]
s = AsWiki::Scanner.new(" \n")
q = []
while i = s.next_token
q << i
if i == [:EOF, nil]
break
end
end
assert_equal([[:BLANK, ' '],[:EOL,"\n"],[:EOF,nil]], q)
t.each{|a,r|
p a, r
s = AsWiki::Scanner.new(a+"\n")
q = []
while i = s.next_token
q << i
if i == [:EOF, nil]
break
end
end
assert_equal(r, q[0..-3])
}
end
def test_s_new
c = AsWiki::Scanner.new('')
assert_instance_of(AsWiki::Scanner, c)
end
end
|