diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:13:14 +0000 |
commit | d0233291bc8a5068e52c69c210e5979e5324b5bc (patch) | |
tree | 7d9459449c33792c63eeb7baa071e76352e0baab /trunk/test/strscan/test_stringscanner.rb | |
parent | 0dc342de848a642ecce8db697b8fecd83a63e117 (diff) | |
parent | 72eaacaa15256ab95c3b52ea386f88586fb9da40 (diff) |
re-adding tag v1_9_0_4 as an alias of trunk@18848v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/test/strscan/test_stringscanner.rb')
-rw-r--r-- | trunk/test/strscan/test_stringscanner.rb | 674 |
1 files changed, 0 insertions, 674 deletions
diff --git a/trunk/test/strscan/test_stringscanner.rb b/trunk/test/strscan/test_stringscanner.rb deleted file mode 100644 index ff1eb7a298..0000000000 --- a/trunk/test/strscan/test_stringscanner.rb +++ /dev/null @@ -1,674 +0,0 @@ -# -# test/strscan/test_stringscanner.rb -# - -require 'strscan' -require 'test/unit' - -class TestStringScanner < Test::Unit::TestCase - def test_s_new - s = StringScanner.new('test string') - assert_instance_of StringScanner, s - assert_equal false, s.eos? - assert_equal false, s.tainted? - - str = 'test string' - str.taint - s = StringScanner.new(str, false) - assert_instance_of StringScanner, s - assert_equal false, s.eos? - assert_same str, s.string - assert_equal true, s.string.tainted? - - str = 'test string' - str.taint - s = StringScanner.new(str) - assert_equal true, s.string.tainted? - end - - UNINIT_ERROR = ArgumentError - - def test_s_allocate - s = StringScanner.allocate - assert_equal '#<StringScanner (uninitialized)>', s.inspect.sub(/StringScanner_C/, 'StringScanner') - assert_raises(UNINIT_ERROR) { s.eos? } - assert_raises(UNINIT_ERROR) { s.scan(/a/) } - s.string = 'test' - assert_equal '#<StringScanner 0/4 @ "test">', s.inspect.sub(/StringScanner_C/, 'StringScanner') - assert_nothing_raised(UNINIT_ERROR) { s.eos? } - assert_equal false, s.eos? - end - - def test_s_mustc - assert_nothing_raised(NotImplementedError) { - StringScanner.must_C_version - } - end - - def test_dup - s = StringScanner.new('test string') - d = s.dup - assert_equal s.inspect, d.inspect - assert_equal s.string, d.string - assert_equal s.pos, d.pos - assert_equal s.matched?, d.matched? - assert_equal s.eos?, d.eos? - - s = StringScanner.new('test string') - s.scan(/test/) - d = s.dup - assert_equal s.inspect, d.inspect - assert_equal s.string, d.string - assert_equal s.pos, d.pos - assert_equal s.matched?, d.matched? - assert_equal s.eos?, d.eos? - - s = StringScanner.new('test string') - s.scan(/test/) - s.scan(/NOT MATCH/) - d = s.dup - assert_equal s.inspect, d.inspect - assert_equal s.string, d.string - assert_equal s.pos, d.pos - assert_equal s.matched?, d.matched? - assert_equal s.eos?, d.eos? - - s = StringScanner.new('test string') - s.terminate - d = s.dup - assert_equal s.inspect, d.inspect - assert_equal s.string, d.string - assert_equal s.pos, d.pos - assert_equal s.matched?, d.matched? - assert_equal s.eos?, d.eos? - end - - def test_const_Version - assert_instance_of String, StringScanner::Version - assert_equal true, StringScanner::Version.frozen? - end - - def test_const_Id - assert_instance_of String, StringScanner::Id - assert_equal true, StringScanner::Id.frozen? - end - - def test_inspect - str = 'test string' - str.taint - s = StringScanner.new(str, false) - assert_instance_of String, s.inspect - assert_equal s.inspect, s.inspect - assert_equal '#<StringScanner 0/11 @ "test ...">', s.inspect.sub(/StringScanner_C/, 'StringScanner') - s.get_byte - assert_equal '#<StringScanner 1/11 "t" @ "est s...">', s.inspect.sub(/StringScanner_C/, 'StringScanner') - assert_equal true, s.inspect.tainted? - - s = StringScanner.new("\n") - assert_equal '#<StringScanner 0/1 @ "\n">', s.inspect - end - - def test_eos? - s = StringScanner.new('test string') - assert_equal false, s.eos? - assert_equal false, s.eos? - s.scan(/\w+/) - assert_equal false, s.eos? - assert_equal false, s.eos? - s.scan(/\s+/) - s.scan(/\w+/) - assert_equal true, s.eos? - assert_equal true, s.eos? - s.scan(/\w+/) - assert_equal true, s.eos? - - s = StringScanner.new('test') - s.scan(/te/) - s.string.replace '' - assert_equal true, s.eos? - end - - def test_bol? - s = StringScanner.new("a\nbbb\n\ncccc\nddd\r\neee") - assert_equal true, s.bol? - assert_equal true, s.bol? - s.scan(/a/) - assert_equal false, s.bol? - assert_equal false, s.bol? - s.scan(/\n/) - assert_equal true, s.bol? - s.scan(/b/) - assert_equal false, s.bol? - s.scan(/b/) - assert_equal false, s.bol? - s.scan(/b/) - assert_equal false, s.bol? - s.scan(/\n/) - assert_equal true, s.bol? - s.unscan - assert_equal false, s.bol? - s.scan(/\n/) - s.scan(/\n/) - assert_equal true, s.bol? - s.scan(/c+\n/) - assert_equal true, s.bol? - s.scan(/d+\r\n/) - assert_equal true, s.bol? - s.scan(/e+/) - assert_equal false, s.bol? - end - - def test_string - s = StringScanner.new('test') - assert_equal 'test', s.string - s.string = 'a' - assert_equal 'a', s.string - s.scan(/a/) - s.string = 'b' - assert_equal 0, s.pos - end - - def test_pos - s = StringScanner.new('test string') - assert_equal 0, s.pos - s.get_byte - assert_equal 1, s.pos - s.get_byte - assert_equal 2, s.pos - s.terminate - assert_equal 11, s.pos - end - - def test_concat - s = StringScanner.new('a') - s.scan(/a/) - s.concat 'b' - assert_equal false, s.eos? - assert_equal 'b', s.scan(/b/) - assert_equal true, s.eos? - s.concat 'c' - assert_equal false, s.eos? - assert_equal 'c', s.scan(/c/) - assert_equal true, s.eos? - end - - def test_scan - s = StringScanner.new('stra strb strc', true) - tmp = s.scan(/\w+/) - assert_equal 'stra', tmp - assert_equal false, tmp.tainted? - - tmp = s.scan(/\s+/) - assert_equal ' ', tmp - assert_equal false, tmp.tainted? - - assert_equal 'strb', s.scan(/\w+/) - assert_equal ' ', s.scan(/\s+/) - - tmp = s.scan(/\w+/) - assert_equal 'strc', tmp - assert_equal false, tmp.tainted? - - assert_nil s.scan(/\w+/) - assert_nil s.scan(/\w+/) - - - str = 'stra strb strc' - str.taint - s = StringScanner.new(str, false) - tmp = s.scan(/\w+/) - assert_equal 'stra', tmp - assert_equal true, tmp.tainted? - - tmp = s.scan(/\s+/) - assert_equal ' ', tmp - assert_equal true, tmp.tainted? - - assert_equal 'strb', s.scan(/\w+/) - assert_equal ' ', s.scan(/\s+/) - - tmp = s.scan(/\w+/) - assert_equal 'strc', tmp - assert_equal true, tmp.tainted? - - assert_nil s.scan(/\w+/) - assert_nil s.scan(/\w+/) - - s = StringScanner.new('test') - s.scan(/te/) - # This assumes #string does not duplicate string, - # but it is implementation specific issue. - # DO NOT RELY ON THIS FEATURE. - s.string.replace '' - # unspecified: assert_equal 2, s.pos - assert_equal nil, s.scan(/test/) - - # [ruby-bugs:4361] - s = StringScanner.new("") - assert_equal "", s.scan(//) - assert_equal "", s.scan(//) - end - - def test_skip - s = StringScanner.new('stra strb strc', true) - assert_equal 4, s.skip(/\w+/) - assert_equal 1, s.skip(/\s+/) - assert_equal 4, s.skip(/\w+/) - assert_equal 1, s.skip(/\s+/) - assert_equal 4, s.skip(/\w+/) - assert_nil s.skip(/\w+/) - assert_nil s.skip(/\s+/) - assert_equal true, s.eos? - - s = StringScanner.new('test') - s.scan(/te/) - s.string.replace '' - assert_equal nil, s.skip(/./) - - # [ruby-bugs:4361] - s = StringScanner.new("") - assert_equal 0, s.skip(//) - assert_equal 0, s.skip(//) - end - - def test_getch - s = StringScanner.new('abcde') - assert_equal 'a', s.getch - assert_equal 'b', s.getch - assert_equal 'c', s.getch - assert_equal 'd', s.getch - assert_equal 'e', s.getch - assert_nil s.getch - - str = 'abc' - str.taint - s = StringScanner.new(str) - assert_equal true, s.getch.tainted? - assert_equal true, s.getch.tainted? - assert_equal true, s.getch.tainted? - assert_nil s.getch - - s = StringScanner.new("\244\242".force_encoding("euc-jp")) - assert_equal "\244\242".force_encoding("euc-jp"), s.getch - assert_nil s.getch - - s = StringScanner.new('test') - s.scan(/te/) - s.string.replace '' - assert_equal nil, s.getch - end - - def test_get_byte - s = StringScanner.new('abcde') - assert_equal 'a', s.get_byte - assert_equal 'b', s.get_byte - assert_equal 'c', s.get_byte - assert_equal 'd', s.get_byte - assert_equal 'e', s.get_byte - assert_nil s.get_byte - assert_nil s.get_byte - - str = 'abc' - str.taint - s = StringScanner.new(str) - assert_equal true, s.get_byte.tainted? - assert_equal true, s.get_byte.tainted? - assert_equal true, s.get_byte.tainted? - assert_nil s.get_byte - - s = StringScanner.new("\244\242".force_encoding("euc-jp")) - assert_equal "\244".force_encoding("euc-jp"), s.get_byte - assert_equal "\242".force_encoding("euc-jp"), s.get_byte - assert_nil s.get_byte - - s = StringScanner.new('test') - s.scan(/te/) - s.string.replace '' - assert_equal nil, s.get_byte - end - - def test_matched - s = StringScanner.new('stra strb strc') - s.scan(/\w+/) - assert_equal 'stra', s.matched - assert_equal false, s.matched.tainted? - s.scan(/\s+/) - assert_equal ' ', s.matched - s.scan(/\w+/) - assert_equal 'strb', s.matched - s.scan(/\s+/) - assert_equal ' ', s.matched - s.scan(/\w+/) - assert_equal 'strc', s.matched - s.scan(/\w+/) - assert_nil s.matched - s.getch - assert_nil s.matched - - s = StringScanner.new('stra strb strc') - s.getch - assert_equal 's', s.matched - assert_equal false, s.matched.tainted? - s.get_byte - assert_equal 't', s.matched - assert_equal 't', s.matched - assert_equal false, s.matched.tainted? - - str = 'test' - str.taint - s = StringScanner.new(str) - s.scan(/\w+/) - assert_equal true, s.matched.tainted? - assert_equal true, s.matched.tainted? - end - - def test_AREF - s = StringScanner.new('stra strb strc') - - s.scan(/\w+/) - assert_nil s[-2] - assert_equal 'stra', s[-1] - assert_equal 'stra', s[0] - assert_nil s[1] - - assert_equal false, s[-1].tainted? - assert_equal false, s[0].tainted? - - s.skip(/\s+/) - assert_nil s[-2] - assert_equal ' ', s[-1] - assert_equal ' ', s[0] - assert_nil s[1] - - s.scan(/(s)t(r)b/) - assert_nil s[-100] - assert_nil s[-4] - assert_equal 'strb', s[-3] - assert_equal 's', s[-2] - assert_equal 'r', s[-1] - assert_equal 'strb', s[0] - assert_equal 's', s[1] - assert_equal 'r', s[2] - assert_nil s[3] - assert_nil s[100] - - s.scan(/\s+/) - - s.getch - assert_nil s[-2] - assert_equal 's', s[-1] - assert_equal 's', s[0] - assert_nil s[1] - - s.get_byte - assert_nil s[-2] - assert_equal 't', s[-1] - assert_equal 't', s[0] - assert_nil s[1] - - s.scan(/.*/) - s.scan(/./) - assert_nil s[0] - assert_nil s[0] - - - s = StringScanner.new("\244\242".force_encoding("euc-jp")) - s.getch - assert_equal "\244\242".force_encoding("euc-jp"), s[0] - - str = 'test' - str.taint - s = StringScanner.new(str) - s.scan(/(t)(e)(s)(t)/) - assert_equal true, s[0].tainted? - assert_equal true, s[1].tainted? - assert_equal true, s[2].tainted? - assert_equal true, s[3].tainted? - assert_equal true, s[4].tainted? - end - - def test_pre_match - s = StringScanner.new('a b c d e') - s.scan(/\w/) - assert_equal '', s.pre_match - assert_equal false, s.pre_match.tainted? - s.skip(/\s/) - assert_equal 'a', s.pre_match - assert_equal false, s.pre_match.tainted? - s.scan(/\w/) - assert_equal 'a ', s.pre_match - s.scan_until(/c/) - assert_equal 'a b ', s.pre_match - s.getch - assert_equal 'a b c', s.pre_match - s.get_byte - assert_equal 'a b c ', s.pre_match - s.get_byte - assert_equal 'a b c d', s.pre_match - s.scan(/never match/) - assert_nil s.pre_match - - str = 'test string' - str.taint - s = StringScanner.new(str) - s.scan(/\w+/) - assert_equal true, s.pre_match.tainted? - s.scan(/\s+/) - assert_equal true, s.pre_match.tainted? - s.scan(/\w+/) - assert_equal true, s.pre_match.tainted? - end - - def test_post_match - s = StringScanner.new('a b c d e') - s.scan(/\w/) - assert_equal ' b c d e', s.post_match - s.skip(/\s/) - assert_equal 'b c d e', s.post_match - s.scan(/\w/) - assert_equal ' c d e', s.post_match - s.scan_until(/c/) - assert_equal ' d e', s.post_match - s.getch - assert_equal 'd e', s.post_match - s.get_byte - assert_equal ' e', s.post_match - s.get_byte - assert_equal 'e', s.post_match - s.scan(/never match/) - assert_nil s.post_match - s.scan(/./) - assert_equal '', s.post_match - s.scan(/./) - assert_nil s.post_match - - str = 'test string' - str.taint - s = StringScanner.new(str) - s.scan(/\w+/) - assert_equal true, s.post_match.tainted? - s.scan(/\s+/) - assert_equal true, s.post_match.tainted? - s.scan(/\w+/) - assert_equal true, s.post_match.tainted? - end - - def test_terminate - s = StringScanner.new('ssss') - s.getch - s.terminate - assert_equal true, s.eos? - s.terminate - assert_equal true, s.eos? - end - - def test_reset - s = StringScanner.new('ssss') - s.getch - s.reset - assert_equal 0, s.pos - s.scan(/\w+/) - s.reset - assert_equal 0, s.pos - s.reset - assert_equal 0, s.pos - end - - def test_matched_size - s = StringScanner.new('test string') - assert_nil s.matched_size - s.scan(/test/) - assert_equal 4, s.matched_size - assert_equal 4, s.matched_size - s.scan(//) - assert_equal 0, s.matched_size - s.scan(/x/) - assert_nil s.matched_size - assert_nil s.matched_size - s.terminate - assert_nil s.matched_size - - # obsolete - s = StringScanner.new('test string') - assert_nil s.matchedsize - s.scan(/test/) - assert_equal 4, s.matched_size - s.terminate - assert_nil s.matched_size - end - - def test_encoding - ss = StringScanner.new("\xA1\xA2".force_encoding("euc-jp")) - assert_equal(Encoding::EUC_JP, ss.scan(/./e).encoding) - end - - def test_generic_regexp - ss = StringScanner.new("\xA1\xA2".force_encoding("euc-jp")) - t = ss.scan(/./) - assert_equal("\xa1\xa2".force_encoding("euc-jp"), t) - end - - def test_set_pos - s = StringScanner.new("test string") - s.pos = 7 - assert_equal("ring", s.rest) - end - - def test_match_p - s = StringScanner.new("test string") - assert_equal(4, s.match?(/\w+/)) - assert_equal(4, s.match?(/\w+/)) - assert_equal(nil, s.match?(/\s+/)) - end - - def test_check - s = StringScanner.new("Foo Bar Baz") - assert_equal("Foo", s.check(/Foo/)) - assert_equal(0, s.pos) - assert_equal("Foo", s.matched) - assert_equal(nil, s.check(/Bar/)) - assert_equal(nil, s.matched) - end - - def test_scan_full - s = StringScanner.new("Foo Bar Baz") - assert_equal(4, s.scan_full(/Foo /, false, false)) - assert_equal(0, s.pos) - assert_equal(nil, s.scan_full(/Baz/, false, false)) - assert_equal("Foo ", s.scan_full(/Foo /, false, true)) - assert_equal(0, s.pos) - assert_equal(nil, s.scan_full(/Baz/, false, false)) - assert_equal(4, s.scan_full(/Foo /, true, false)) - assert_equal(4, s.pos) - assert_equal(nil, s.scan_full(/Baz /, false, false)) - assert_equal("Bar ", s.scan_full(/Bar /, true, true)) - assert_equal(8, s.pos) - assert_equal(nil, s.scan_full(/az/, false, false)) - end - - def test_exist_p - s = StringScanner.new("test string") - assert_equal(3, s.exist?(/s/)) - assert_equal(0, s.pos) - s.scan(/test/) - assert_equal(2, s.exist?(/s/)) - assert_equal(4, s.pos) - assert_equal(nil, s.exist?(/e/)) - end - - def test_skip_until - s = StringScanner.new("Foo Bar Baz") - assert_equal(3, s.skip_until(/Foo/)) - assert_equal(3, s.pos) - assert_equal(4, s.skip_until(/Bar/)) - assert_equal(7, s.pos) - assert_equal(nil, s.skip_until(/Qux/)) - end - - def test_check_until - s = StringScanner.new("Foo Bar Baz") - assert_equal("Foo", s.check_until(/Foo/)) - assert_equal(0, s.pos) - assert_equal("Foo Bar", s.check_until(/Bar/)) - assert_equal(0, s.pos) - assert_equal(nil, s.check_until(/Qux/)) - end - - def test_search_full - s = StringScanner.new("Foo Bar Baz") - assert_equal(8, s.search_full(/Bar /, false, false)) - assert_equal(0, s.pos) - assert_equal("Foo Bar ", s.search_full(/Bar /, false, true)) - assert_equal(0, s.pos) - assert_equal(8, s.search_full(/Bar /, true, false)) - assert_equal(8, s.pos) - assert_equal("Baz", s.search_full(/az/, true, true)) - assert_equal(11, s.pos) - end - - def test_peek - s = StringScanner.new("test string") - assert_equal("test st", s.peek(7)) - assert_equal("test st", s.peek(7)) - s.scan(/test/) - assert_equal(" stri", s.peek(5)) - assert_equal(" string", s.peek(10)) - s.scan(/ string/) - assert_equal("", s.peek(10)) - end - - def test_unscan - s = StringScanner.new('test string') - assert_equal("test", s.scan(/\w+/)) - s.unscan - assert_equal("te", s.scan(/../)) - assert_equal(nil, s.scan(/\d/)) - assert_raise(ScanError) { s.unscan } - end - - def test_rest - s = StringScanner.new('test string') - assert_equal("test string", s.rest) - s.scan(/test/) - assert_equal(" string", s.rest) - s.scan(/ string/) - assert_equal("", s.rest) - s.scan(/ string/) - end - - def test_rest_size - s = StringScanner.new('test string') - assert_equal(11, s.rest_size) - s.scan(/test/) - assert_equal(7, s.rest_size) - s.scan(/ string/) - assert_equal(0, s.rest_size) - s.scan(/ string/) - end - - def test_inspect - s = StringScanner.new('test string test') - s.scan(/test strin/) - assert_equal('#<StringScanner 10/16 "...strin" @ "g tes...">', s.inspect) - end -end |