mirror of
https://github.com/ruby/ruby.git
synced 2025-08-28 15:36:16 +02:00
string.c: fix String#{casecmp,casecmp?} for non-string arguments
* string.c: make String#{casecmp,casecmp?} return nil for non-string arguments instead of raising a TypeError. * test/ruby/test_string.rb: add tests. Reported by Marcus Stollsteimer. Based on a patch by Shingo Morita. [ruby-core:80145] [Bug #13312] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
913afdf95c
commit
40bc846bf8
2 changed files with 30 additions and 8 deletions
|
@ -2321,6 +2321,13 @@ CODE
|
|||
assert_equal(1, "FoO".casecmp("BaR"))
|
||||
assert_equal(-1, "baR".casecmp("FoO"))
|
||||
assert_equal(1, "\u3042B".casecmp("\u3042a"))
|
||||
|
||||
assert_nil("foo".casecmp(:foo))
|
||||
assert_nil("foo".casecmp(Object.new))
|
||||
|
||||
o = Object.new
|
||||
def o.to_str; "fOO"; end
|
||||
assert_equal(0, "FoO".casecmp(o))
|
||||
end
|
||||
|
||||
def test_casecmp?
|
||||
|
@ -2328,6 +2335,13 @@ CODE
|
|||
assert_equal(false, 'FoO'.casecmp?('BaR'))
|
||||
assert_equal(false, 'baR'.casecmp?('FoO'))
|
||||
assert_equal(true, 'äöü'.casecmp?('ÄÖÜ'))
|
||||
|
||||
assert_nil("foo".casecmp?(:foo))
|
||||
assert_nil("foo".casecmp?(Object.new))
|
||||
|
||||
o = Object.new
|
||||
def o.to_str; "fOO"; end
|
||||
assert_equal(true, "FoO".casecmp?(o))
|
||||
end
|
||||
|
||||
def test_upcase2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue