summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2013-06-09 04:04:19 +0800
committerDaniel Bovensiepen <[email protected]>2013-06-09 04:04:19 +0800
commit39b6d087c7fdcc5d02d42ec0de7fca5b23b4fb77 (patch)
tree2e0de3520b1e443f02e5cec3fe25b07939d46d0c
parent83d04a539e3e765b2e82d02cfbcde4a77808eb29 (diff)
downloadmruby-39b6d087c7fdcc5d02d42ec0de7fca5b23b4fb77.tar.gz
mruby-39b6d087c7fdcc5d02d42ec0de7fca5b23b4fb77.zip
Improve alias tests
-rw-r--r--test/t/class.rb23
-rw-r--r--test/t/methods.rb46
2 files changed, 45 insertions, 24 deletions
diff --git a/test/t/class.rb b/test/t/class.rb
index e6d7128fa..eb470e416 100644
--- a/test/t/class.rb
+++ b/test/t/class.rb
@@ -229,26 +229,3 @@ end
assert('Class Dup 2') do
module M; end; M.dup.class == Module
end
-
-assert('Class Alias 1') do
- class A
- def test; 1; end
-
- alias test2 test
- alias :test3 :test
- end
-
- A.new.test2 == 1 and A.new.test3 == 1
-end
-
-assert('Class Alias 2') do
- class A
- def test; 1; end
-
- alias test2 test
-
- def test; 2; end
- end
-
- A.new.test == 2 and A.new.test2 == 1
-end
diff --git a/test/t/methods.rb b/test/t/methods.rb
index 701ebe326..bbd8ee09d 100644
--- a/test/t/methods.rb
+++ b/test/t/methods.rb
@@ -1,5 +1,49 @@
##
-# Chapter 13 "Class and modules" ISO Test
+# Chapter 13.3 "Methods" ISO Test
+
+assert('The alias statement', '13.3.6 a) 4)') do
+ # check aliasing in all possible ways
+
+ def alias_test_method_original; true; end
+
+ alias alias_test_method_a alias_test_method_original
+ alias :alias_test_method_b :alias_test_method_original
+
+ assert_true(alias_test_method_original)
+ assert_true(alias_test_method_a)
+ assert_true(alias_test_method_b)
+end
+
+assert('The alias statement (overwrite original)', '13.3.6 a) 4)') do
+ # check that an aliased method can be overwritten
+ # without side effect
+
+ def alias_test_method_original; true; end
+
+ alias alias_test_method_a alias_test_method_original
+ alias :alias_test_method_b :alias_test_method_original
+
+ assert_true(alias_test_method_original)
+
+ def alias_test_method_original; false; end
+
+ assert_false(alias_test_method_original)
+ assert_true(alias_test_method_a)
+ assert_true(alias_test_method_b)
+end
+
+assert('The alias statement', '13.3.6 a) 5)') do
+ # check that alias is raising NameError if
+ # non-existing method should be undefined
+
+ assert_raise(NameError) do
+ alias new_name_a non_existing_method
+ end
+
+ assert_raise(NameError) do
+ alias :new_name_b :non_existing_method
+ end
+end
assert('The undef statement', '13.3.7 a) 4)') do
# check that undef is undefining method