    end
  
    def test_str_chop
-@@ -728,7 +739,7 @@ def test_str_dup
+@@ -728,7 +750,7 @@ def test_str_dup
    end
  
    def test_str_count
 -    combination(STRINGS, STRINGS) {|s1, s2|
-+    strings_strings {|s1, s2|
++    strings_2 {|s1, s2|
        desc = proc {encdumpcall(s1, :count, s2)}
        if !s1.valid_encoding? || !s2.valid_encoding?
          assert_raise(ArgumentError, Encoding::CompatibilityError, desc) { s1.count(s2) }
-@@ -752,21 +763,19 @@ def test_str_count
+@@ -752,21 +774,19 @@ def test_str_count
    end
  
    def test_str_crypt

       first.upto(last-1) {|i|
         c = s[i]
         t2 << c if c
@@ -411,7 +415,7 @@ def test_str_aref_range3
   end
 
   def test_str_assign
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_strings {|s1, s2|
       (-2).upto(2) {|i|
         t = s1.dup
         if s1.ascii_only? || s2.ascii_only? || s1.encoding == s2.encoding
@@ -554,7 +558,7 @@ def test_str_assign_range3
   end
 
   def test_str_cmp
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_strings {|s1, s2|
       desc = "#{encdump s1} <=> #{encdump s2}"
       r = s1 <=> s2
       if s1 == s2
@@ -585,7 +589,7 @@ def test_str_capitalize
   end
 
   def test_str_casecmp
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_strings {|s1, s2|
       #puts "#{encdump(s1)}.casecmp(#{encdump(s2)})"
       next unless s1.valid_encoding? && s2.valid_encoding? && Encoding.compatible?(s1, s2)
       r = s1.casecmp(s2)
@@ -657,7 +661,7 @@ def test_str_rjust
   end
 
   def test_str_chomp
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_strings {|s1, s2|
       if !s1.ascii_only? && !s2.ascii_only? && !Encoding.compatible?(s1,s2)
         if s1.bytesize > s2.bytesize
           assert_raise(Encoding::CompatibilityError, "#{encdump(s1)}.chomp(#{encdump(s2)})") do
@@ -677,13 +681,20 @@ def test_str_chomp
 
   def test_str_smart_chomp
     bug10893 = '[ruby-core:68258] [Bug #10893]'

       if !s.empty? # xxx
         t = enccall(b("%s"), :%, s)
         assert_strenc(b(s), (b('')+s).encoding, t)
@@ -252,7 +267,7 @@ def test_str_eq_reflexive
   end
 
   def test_str_eq_symmetric
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_2 {|s1, s2|
       if s1 == s2
         assert_equal(s2, s1, "#{encdump s2} == #{encdump s1}")
       else
@@ -262,7 +277,7 @@ def test_str_eq_symmetric
   end
 
   def test_str_eq_transitive
-    combination(STRINGS, STRINGS, STRINGS) {|s1, s2, s3|
+    strings_3 {|s1, s2, s3|
       if s1 == s2 && s2 == s3
         assert_equal(s1, s3, "transitive: #{encdump s1} == #{encdump s2} == #{encdump s3}")
       end
@@ -270,7 +285,7 @@ def test_str_eq_transitive
   end
 
   def test_str_eq
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_2 {|s1, s2|
       desc_eq = "#{encdump s1} == #{encdump s2}"
       if b(s1) == b(s2) and
           (s1.ascii_only? && s2.ascii_only? or
@@ -289,7 +304,7 @@ def test_str_eq
   end
 
   def test_str_concat
-    combination(STRINGS, STRINGS) {|s1, s2|
+    strings_2 {|s1, s2|
       s = s1.dup
       if s1.ascii_only? || s2.ascii_only? || s1.encoding == s2.encoding
         s << s2
@@ -304,7 +319,7 @@ def test_str_concat
 
   def test_str_aref
     STRINGS.each {|s|
