summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2013-06-09 03:51:44 +0800
committerDaniel Bovensiepen <[email protected]>2013-06-09 03:51:44 +0800
commit83d04a539e3e765b2e82d02cfbcde4a77808eb29 (patch)
tree603549c7cd47ac095587838ad19cff23dfd0412c
parent16424a14dc3b1a70ef8ebe3923c3dbd482e77c93 (diff)
downloadmruby-83d04a539e3e765b2e82d02cfbcde4a77808eb29.tar.gz
mruby-83d04a539e3e765b2e82d02cfbcde4a77808eb29.zip
Improve undef tests
-rw-r--r--test/t/class.rb59
-rw-r--r--test/t/methods.rb65
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