[前][次][番号順一覧][スレッド一覧]

ruby-changes:5213

From: mame <ko1@a...>
Date: Fri, 30 May 2008 22:50:01 +0900 (JST)
Subject: [ruby-changes:5213] Ruby:r16708 (trunk): * test/ruby/test_regexp.rb: add tests.

mame	2008-05-30 22:47:54 +0900 (Fri, 30 May 2008)

  New Revision: 16708

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_regexp.rb

  Log:
    * test/ruby/test_regexp.rb: add tests.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16708&r2=16707&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_regexp.rb?r1=16708&r2=16707&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16707)
+++ ChangeLog	(revision 16708)
@@ -1,3 +1,7 @@
+Fri May 30 22:47:17 2008  Yusuke Endoh  <mame@t...>
+
+	* test/ruby/test_regexp.rb: add tests.
+
 Fri May 30 22:40:53 2008  Yusuke Endoh  <mame@t...>
 
 	* test/ruby/test_signal.rb: add tests to achieve over 80% test
Index: test/ruby/test_regexp.rb
===================================================================
--- test/ruby/test_regexp.rb	(revision 16707)
+++ test/ruby/test_regexp.rb	(revision 16708)
@@ -272,7 +272,7 @@
       Thread.new { $SAFE = 4; re.instance_eval { initialize(re) } }.join
     end
 
-    assert_equal(Encoding::ASCII_8BIT, Regexp.new("b..", nil, "n").encoding)
+    assert_equal(Encoding.find("ASCII-8BIT"), Regexp.new("b..", nil, "n").encoding)
     assert_equal("bar", "foobarbaz"[Regexp.new("b..", nil, "n")])
 
     assert_raise(RegexpError) { Regexp.new(")(") }
@@ -471,12 +471,12 @@
     ss = [ss] unless ss.is_a?(Array)
     ss.each do |e, s|
       s ||= e
+      assert_match(re, s)
       m = re.match(s)
-      assert_kind_of(MatchData, m)
       assert_equal(e, m[0])
     end
     fs = [fs] unless fs.is_a?(Array)
-    fs.each {|s| assert_nil(re.match(s)) }
+    fs.each {|s| assert_no_match(re, s) }
   end
 
   def failcheck(re)
@@ -514,8 +514,42 @@
     check(/\A\v\z/, "\v")
     failcheck('(')
     failcheck('(?foo)')
+    failcheck('/\p{foobarbazqux}/')
+    failcheck('/\p{foobarbazqux' + 'a' * 1000 + '}/')
+    failcheck('/[1-\w]/')
   end
 
+  def test_exec
+    check(/A*B/, %w(B AB AAB AAAB), %w(A))
+    check(/\w*!/, %w(! a! ab! abc!), %w(abc))
+    check(/\w*\W/, %w(! a" ab# abc$), %w(abc))
+    check(/\w*\w/, %w(z az abz abcz), %w(!))
+    check(/[a-z]*\w/, %w(z az abz abcz), %w(!))
+    check(/[a-z]*\W/, %w(! a" ab# abc$), %w(A))
+    check(/((a|bb|ccc|dddd)(1|22|333|4444))/i, %w(a1 bb1 a22), %w(a2 b1))
+    check(/\u0080/, (1..4).map {|i| ["\u0080", "\u0080" * i] }, ["\u0081"])
+    check(/\u0080\u0080/, (2..4).map {|i| ["\u0080" * 2, "\u0080" * i] }, ["\u0081"])
+    check(/\u0080\u0080\u0080/, (3..4).map {|i| ["\u0080" * 3, "\u0080" * i] }, ["\u0081"])
+    check(/\u0080\u0080\u0080\u0080/, (4..4).map {|i| ["\u0080" * 4, "\u0080" * i] }, ["\u0081"])
+    check(/[^\u3042\u3043\u3044]/, %W(a b \u0080 \u3041 \u3045), %W(\u3042 \u3043 \u3044))
+    check(/a.+/m, %W(a\u0080 a\u0080\u0080 a\u0080\u0080\u0080), %W(a))
+    check(/a.+z/m, %W(a\u0080z a\u0080\u0080z a\u0080\u0080\u0080z), %W(az))
+    check(/abc\B.\Bxyz/, %w(abcXxyz abc0xyz), %w(abc|xyz abc-xyz))
+    check(/\Bxyz/, [%w(xyz abcXxyz), %w(xyz abc0xyz)], %w(abc xyz abc-xyz))
+    check(/abc\B/, [%w(abc abcXxyz), %w(abc abc0xyz)], %w(abc xyz abc-xyz))
+    failcheck('(?<foo>abc)\1')
+    check(/^(A+|B+)(?>\g<1>)*[BC]$/, %w(AC BC ABC BAC AABBC), %w(AABB))
+    check(/^(A+|B(?>\g<1>)*)[AC]$/, %w(AAAC BBBAAAAC), %w(BBBAAA))
+    check(/^()(?>\g<1>)*$/, "", "a")
+    check(/^(?>(?=a)(#{ "a" * 1000 }|))++$/, ["a" * 1000, "a" * 2000, "a" * 3000], ["", "a" * 500, "b" * 1000])
+    check(/^(?:a?)?$/, ["", "a"], ["aa"])
+    check(/^(?:a+)?$/, ["", "a", "aa"], ["ab"])
+    check(/^(?:a?)+?$/, ["", "a", "aa"], ["ab"])
+    check(/^a??[ab]/, [["a", "a"], ["a", "aa"], ["b", "b"], ["a", "ab"]], ["c"])
+    check(/^(?:a*){3,5}$/, ["", "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa"], ["b"])
+    check(/^(?:a+){3,5}$/, ["aaa", "aaaa", "aaaaa", "aaaaaa"], ["", "a", "aa", "b"])
+  end
+
   def test_parse_look_behind
     check(/(?<=A)B(?=C)/, [%w(B ABC)], %w(aBC ABc aBc))
     check(/(?<!A)B(?!C)/, [%w(B aBc)], %w(ABC aBC ABc))
@@ -543,6 +577,7 @@
     failcheck('()\k<-2>')
     failcheck('()\g<-2>')
     check(/\A(?<x>.)(?<x>.)\k<x>\z/, %w(aba abb), %w(abc .. ....))
+    check(/\A(?<x>.)(?<x>.)\k<x>\z/i, %w(aba ABa abb ABb), %w(abc .. ....))
     check(/\k\g/, "kg")
     failcheck('(.\g<1>)')
     failcheck('(.\g<2>)')
@@ -550,14 +585,14 @@
     failcheck('((?=\g<1>))')
     failcheck('(\g<1>|.)')
     failcheck('(.|\g<1>)')
-    check(/A*B/, %w(B AB AAB AAAB), %w(A))
-    check(/\w*!/, %w(! a! ab! abc!), %w(abc))
-    check(/\w*\W/, %w(! a" ab# abc$), %w(abc))
-    check(/\w*\w/, %w(z az abz abcz), %w(!))
-    check(/[a-z]*\w/, %w(z az abz abcz), %w(!))
-    check(/[a-z]*\W/, %w(! a" ab# abc$), %w(A))
     check(/(!)(?<=(a)|\g<1>)/, ["!"], %w(a))
-    check(/((a|bb|ccc|dddd)(1|22|333|4444))/i, %w(a1 bb1 a22), %w(a2 b1))
+    check(/^(a|b\g<1>c)$/, %w(a bac bbacc bbbaccc), %w(bbac bacc))
+    check(/^(a|b\g<2>c)(B\g<1>C){0}$/, %w(a bBaCc bBbBaCcCc bBbBbBaCcCcCc), %w(bBbBaCcC BbBaCcCc))
+    check(/\A(?<n>.|X\g<n>)(?<x>\g<n>){0}(?<y>\k<n+0>){0}\g<x>\g<y>\z/, "XXaXbXXa", %w(XXabXa abb))
+    check(/\A(?<n>.|X\g<n>)(?<x>\g<n>){0}(?<y>\k<n+1>){0}\g<x>\g<y>\z/, "XaXXbXXb", %w(aXXbXb aba))
+    failcheck('(?<x>)(?<x>)(\g<x>)')
+    check(/^(?<x>foo)(bar)\k<x>/, %w(foobarfoo), %w(foobar barfoo))
+    check(/^(?<a>f)(?<a>o)(?<a>o)(?<a>b)(?<a>a)(?<a>r)(?<a>b)(?<a>a)(?<a>z)\k<a>{9}$/, %w(foobarbazfoobarbaz foobarbazbazbarfoo foobarbazzabraboof), %w(foobar barfoo))
   end
 
   def test_parse_curly_brace

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]