Feature #12786 ยป string_casecmp_.patch
| string.c | ||
|---|---|---|
| return INT2FIX(-1); | ||
| } | ||
| /* | ||
| * call-seq: | ||
| * str.casecmp?(other_str) -> true or false | ||
| * | ||
| * Case-insensitive string comparison. | ||
| * | ||
| * "abcdef".casecmp?("abcde") #=> false | ||
| * "aBcDeF".casecmp?("abcdef") #=> true | ||
| * "abcdef".casecmp?("abcdefg") #=> false | ||
| * "abcdef".casecmp?("ABCDEF") #=> true | ||
| */ | ||
| static VALUE | ||
| rb_str_casecmp_p(VALUE str1, VALUE str2) | ||
| { | ||
| return rb_str_casecmp(str1, str2) == INT2FIX(0) ? Qtrue : Qfalse; | ||
| } | ||
| #define rb_str_index(str, sub, offset) rb_strseq_index(str, sub, offset, 0) | ||
| static long | ||
| ... | ... | |
| } | ||
| /* | ||
| * call-seq: | ||
| * sym.casecmp?(other) -> true, false, or nil | ||
| * | ||
| * Case-insensitive symbol comparison. | ||
| */ | ||
| static VALUE | ||
| sym_casecmp_p(VALUE sym, VALUE other) | ||
| { | ||
| if (!SYMBOL_P(other)) { | ||
| return Qnil; | ||
| } | ||
| return sym_casecmp(sym, other) == INT2FIX(0) ? Qtrue : Qfalse; | ||
| } | ||
| /* | ||
| * call-seq: | ||
| * sym =~ obj -> integer or nil | ||
| * | ||
| ... | ... | |
| rb_define_method(rb_cString, "eql?", rb_str_eql, 1); | ||
| rb_define_method(rb_cString, "hash", rb_str_hash_m, 0); | ||
| rb_define_method(rb_cString, "casecmp", rb_str_casecmp, 1); | ||
| rb_define_method(rb_cString, "casecmp?", rb_str_casecmp_p, 1); | ||
| rb_define_method(rb_cString, "+", rb_str_plus, 1); | ||
| rb_define_method(rb_cString, "*", rb_str_times, 1); | ||
| rb_define_method(rb_cString, "%", rb_str_format_m, 1); | ||
| ... | ... | |
| rb_define_method(rb_cSymbol, "<=>", sym_cmp, 1); | ||
| rb_define_method(rb_cSymbol, "casecmp", sym_casecmp, 1); | ||
| rb_define_method(rb_cSymbol, "casecmp?", sym_casecmp_p, 1); | ||
| rb_define_method(rb_cSymbol, "=~", sym_match, 1); | ||
| rb_define_method(rb_cSymbol, "[]", sym_aref, -1); | ||
| test/ruby/enc/test_utf16.rb | ||
|---|---|---|
| assert_not_equal(0, s1.casecmp(s2), "#{encdump s1}.casecmp(#{encdump s2})") | ||
| end | ||
| def test_casecmp? | ||
| s1 = "aa".force_encoding("utf-16be") | ||
| s2 = "AA" | ||
| assert_not_equal(true, s1.casecmp?(s2), "#{encdump s1}.casecmp?(#{encdump s2})") | ||
| end | ||
| def test_end_with | ||
| s1 = "ab".force_encoding("utf-16be") | ||
| s2 = "b".force_encoding("utf-16be") | ||
| ... | ... | |
| a = ary.sort {|x,y| x.casecmp(y) } | ||
| assert_equal(e, a) | ||
| end | ||
| def test_casecmp2? | ||
| assert_equal(true, "\0A".force_encoding("UTF-16BE").casecmp?("\0a".force_encoding("UTF-16BE"))) | ||
| assert_not_equal(true, "\0A".force_encoding("UTF-16LE").casecmp?("\0a".force_encoding("UTF-16LE"))) | ||
| assert_not_equal(true, "A\0".force_encoding("UTF-16BE").casecmp?("a\0".force_encoding("UTF-16BE"))) | ||
| assert_equal(true, "A\0".force_encoding("UTF-16LE").casecmp?("a\0".force_encoding("UTF-16LE"))) | ||
| end | ||
| end | ||
| test/ruby/test_m17n.rb | ||
|---|---|---|
| assert_not_equal(0, s1.casecmp(s2)) | ||
| end | ||
| def test_casecmp? | ||
| s1 = s("\x81\x41") | ||
| s2 = s("\x81\x61") | ||
| assert_not_equal(true, s1.casecmp?(s2)) | ||
| end | ||
| def test_reverse | ||
| bug11387 = '[ruby-dev:49189] [Bug #11387]' | ||
| s1 = u("abcdefghij\xf0") | ||
| test/ruby/test_m17n_comb.rb | ||
|---|---|---|
| } | ||
| end | ||
| def test_str_casecmp? | ||
| combination(STRINGS, STRINGS) {|s1, s2| | ||
| next unless s1.valid_encoding? && s2.valid_encoding? && Encoding.compatible?(s1, s2) | ||
| r = s1.casecmp?(s2) | ||
| assert_equal(s1.casecmp(s2) == 0, r) | ||
| } | ||
| end | ||
| def test_str_center | ||
| combination(STRINGS, [0,1,2,3,10]) {|s1, width| | ||
| t = s1.center(width) | ||
| test/ruby/test_string.rb | ||
|---|---|---|
| assert_equal(1, "\u3042B".casecmp("\u3042a")) | ||
| end | ||
| def test_casecmp? | ||
| assert_equal(false, "\u3042B".casecmp?("\u3042a")) | ||
| end | ||
| def test_upcase2 | ||
| assert_equal("\u3042AB", "\u3042aB".upcase) | ||
| end | ||
| test/ruby/test_symbol.rb | ||
|---|---|---|
| assert_nil(:foo.casecmp("foo")) | ||
| end | ||
| def test_casecmp? | ||
| assert_equal(true, :FoO.casecmp?(:fOO)) | ||
| assert_equal(false, :FoO.casecmp?(:BaR)) | ||
| assert_equal(false, :baR.casecmp?(:FoO)) | ||
| assert_nil(:foo.casecmp?("foo")) | ||
| end | ||
| def test_length | ||
| assert_equal(3, :FoO.length) | ||
| assert_equal(3, :FoO.size) | ||