mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Add test for recently fixed bugs
This commit is contained in:
@@ -82,6 +82,14 @@ assert('Array#[]=', '15.2.12.5.5') do
|
||||
a = [1,2,3,4,5]
|
||||
a[2...4] = 6
|
||||
assert_equal([1,2,6,5], a)
|
||||
|
||||
# passing self (#3274)
|
||||
a = [1,2,3]
|
||||
a[1,0] = a
|
||||
assert_equal([1,1,2,3,2,3], a)
|
||||
a = [1,2,3]
|
||||
a[-1,0] = a
|
||||
assert_equal([1,2,1,2,3,3], a)
|
||||
end
|
||||
|
||||
assert('Array#clear', '15.2.12.5.6') do
|
||||
@@ -98,6 +106,11 @@ end
|
||||
|
||||
assert('Array#concat', '15.2.12.5.8') do
|
||||
assert_equal([1,2,3,4], [1, 2].concat([3, 4]))
|
||||
|
||||
# passing self (#3302)
|
||||
a = [1,2,3]
|
||||
a.concat(a)
|
||||
assert_equal([1,2,3,1,2,3], a)
|
||||
end
|
||||
|
||||
assert('Array#delete_at', '15.2.12.5.9') do
|
||||
|
||||
@@ -397,6 +397,18 @@ assert('class variable in module and class << self style class method') do
|
||||
assert_equal("value", ClassVariableInModuleTest.class_variable)
|
||||
end
|
||||
|
||||
assert('overriding class variable with a module (#3235)') do
|
||||
module ModuleWithCVar
|
||||
@@class_variable = 1
|
||||
end
|
||||
class CVarOverrideTest
|
||||
@@class_variable = 2
|
||||
include ModuleWithCVar
|
||||
|
||||
assert_equal(1, @@class_variable)
|
||||
end
|
||||
end
|
||||
|
||||
assert('class with non-class/module outer raises TypeError') do
|
||||
assert_raise(TypeError) { class 0::C1; end }
|
||||
assert_raise(TypeError) { class []::C2; end }
|
||||
|
||||
@@ -16,6 +16,13 @@ assert('Hash#[]', '15.2.13.4.2') do
|
||||
a = { 'abc' => 'abc' }
|
||||
|
||||
assert_equal 'abc', a['abc']
|
||||
|
||||
# Hash#[] should call #default (#3272)
|
||||
hash = {}
|
||||
def hash.default(k); self[k] = 1; end
|
||||
hash[:foo] += 1
|
||||
|
||||
assert_equal 2, hash[:foo]
|
||||
end
|
||||
|
||||
assert('Hash#[]=', '15.2.13.4.3') do
|
||||
|
||||
@@ -47,6 +47,19 @@ assert('yield', '11.3.5') do
|
||||
end
|
||||
end
|
||||
|
||||
assert('redo in a for loop (#3275)') do
|
||||
sum = 0
|
||||
for i in 1..10
|
||||
sum += i
|
||||
i -= 1
|
||||
if i > 0
|
||||
redo
|
||||
end
|
||||
end
|
||||
|
||||
assert_equal 220, sum
|
||||
end
|
||||
|
||||
assert('Abbreviated variable assignment', '11.4.2.3.2') do
|
||||
a ||= 1
|
||||
b &&= 1
|
||||
@@ -255,6 +268,13 @@ assert('multiple assignment (nosplat array rhs)') do
|
||||
assert_equal 2, g
|
||||
end
|
||||
|
||||
assert('multiple assignment (empty array rhs #3236, #3239)') do
|
||||
a,b,*c = []; assert_equal [nil, nil, []], [a, b, c]
|
||||
a,b,*c = [1]; assert_equal [1, nil, []], [a, b, c]
|
||||
a,b,*c = [nil]; assert_equal [nil,nil, []], [a, b, c]
|
||||
a,b,*c = [[]]; assert_equal [[], nil, []], [a, b, c]
|
||||
end
|
||||
|
||||
assert('Return values of case statements') do
|
||||
a = [] << case 1
|
||||
when 3 then 2
|
||||
|
||||
Reference in New Issue
Block a user