summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-04-19 20:14:23 +0900
committerKOBAYASHI Shuji <[email protected]>2019-04-19 20:14:23 +0900
commit4a8b88f7757f71d7d88b89764b533dd5ba59fd44 (patch)
treeca3a11f4ddd74d86054a9ef0adfa776823c9f333 /test
parent05f65d2d429fcc5ff6bf5f2f8729fcb5de63b2ca (diff)
downloadmruby-4a8b88f7757f71d7d88b89764b533dd5ba59fd44.tar.gz
mruby-4a8b88f7757f71d7d88b89764b533dd5ba59fd44.zip
Add type check (conversion) in `String#[]=`
Before this patch: 'a'[0] = 1 #=> 1 'a'[:a] = '1' #=> ArgumentError 'a'[:a, 0] = '1' #=> ArgumentError 'a'[0, :a] = '1' #=> ArgumentError 'a'[0, 1] = 1 #=> 1 After this patch / Ruby: 'a'[0] = 1 #=> TypeError 'a'[:a] = '1' #=> TypeError 'a'[:a, 0] = '1' #=> TypeError 'a'[0, :a] = '1' #=> TypeError 'a'[0, 1] = 1 #=> TypeError
Diffstat (limited to 'test')
-rw-r--r--test/t/string.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/test/t/string.rb b/test/t/string.rb
index cf3702cbe..404cf03e1 100644
--- a/test/t/string.rb
+++ b/test/t/string.rb
@@ -161,6 +161,9 @@ assert('String#[]=') do
assert_equal 'aXc', e
end
+ assert_raise(TypeError) { 'a'[0] = 1 }
+ assert_raise(TypeError) { 'a'[:a] = '1' }
+
# length of args is 2
a1 = 'abc'
assert_raise(IndexError) do
@@ -197,6 +200,10 @@ assert('String#[]=') do
assert_raise(IndexError) do
b3['XX'] = 'Y'
end
+
+ assert_raise(TypeError) { 'a'[:a, 0] = '1' }
+ assert_raise(TypeError) { 'a'[0, :a] = '1' }
+ assert_raise(TypeError) { 'a'[0, 1] = 1 }
end
assert('String#capitalize', '15.2.10.5.7') do