diff options
| author | Daniel Bovensiepen <[email protected]> | 2013-06-09 03:51:44 +0800 |
|---|---|---|
| committer | Daniel Bovensiepen <[email protected]> | 2013-06-09 03:51:44 +0800 |
| commit | 83d04a539e3e765b2e82d02cfbcde4a77808eb29 (patch) | |
| tree | 603549c7cd47ac095587838ad19cff23dfd0412c /test/t | |
| parent | 16424a14dc3b1a70ef8ebe3923c3dbd482e77c93 (diff) | |
| download | mruby-83d04a539e3e765b2e82d02cfbcde4a77808eb29.tar.gz mruby-83d04a539e3e765b2e82d02cfbcde4a77808eb29.zip | |
Improve undef tests
Diffstat (limited to 'test/t')
| -rw-r--r-- | test/t/class.rb | 59 | ||||
| -rw-r--r-- | test/t/methods.rb | 65 |
2 files changed, 65 insertions, 59 deletions
diff --git a/test/t/class.rb b/test/t/class.rb index 13845a49f..e6d7128fa 100644 --- a/test/t/class.rb +++ b/test/t/class.rb @@ -252,62 +252,3 @@ assert('Class Alias 2') do A.new.test == 2 and A.new.test2 == 1 end - -assert('Class Undef 1') do - class A - def test1; 1; end - def test2; 2; end - - undef test1 - undef :test2 - end - - result1 = false - begin - A.new.test1 - rescue NoMethodError - result1 = true - end - - result2 = false - begin - A.new.test2 - rescue NoMethodError - result2 = true - end - - result1 == true and result2 == true -end - -assert('Class Undef 2') do - class A - def test1; 1; end - def test2; 2; end - - undef test1, test2 - end - - result1 = false - begin - A.new.test1 - rescue NoMethodError - result1 = true - end - - result2 = false - begin - A.new.test2 - rescue NoMethodError - result2 = true - end - - result1 == true and result2 == true -end - -assert('Var undef') do - assert_raise(NameError) do - a=1 - undef a - end -end - diff --git a/test/t/methods.rb b/test/t/methods.rb new file mode 100644 index 000000000..701ebe326 --- /dev/null +++ b/test/t/methods.rb @@ -0,0 +1,65 @@ +## +# Chapter 13 "Class and modules" ISO Test + +assert('The undef statement', '13.3.7 a) 4)') do + # check that undef is undefining method + # based on the method name + + def existing_method_a; true; end + def existing_method_b; true; end + def existing_method_c; true; end + def existing_method_d; true; end + def existing_method_e; true; end + def existing_method_f; true; end + + # check that methods are defined + + assert_true(existing_method_a, 'Method should be defined') + assert_true(existing_method_b, 'Method should be defined') + assert_true(existing_method_c, 'Method should be defined') + assert_true(existing_method_d, 'Method should be defined') + assert_true(existing_method_e, 'Method should be defined') + assert_true(existing_method_f, 'Method should be defined') + + # undefine in all possible ways and check that method + # is undefined + + undef existing_method_a + assert_raise(NoMethodError) do + existing_method_a + end + + undef :existing_method_b + assert_raise(NoMethodError) do + existing_method_b + end + + undef existing_method_c, existing_method_d + assert_raise(NoMethodError) do + existing_method_c + end + assert_raise(NoMethodError) do + existing_method_d + end + + undef :existing_method_e, :existing_method_f + assert_raise(NoMethodError) do + existing_method_e + end + assert_raise(NoMethodError) do + existing_method_f + end +end + +assert('The undef statement (method undefined)', '13.3.7 a) 5)') do + # check that undef is raising NameError if + # non-existing method should be undefined + + assert_raise(NameError) do + undef non_existing_method + end + + assert_raise(NameError) do + undef :non_existing_method + end +end |
