summaryrefslogtreecommitdiffhomepage
path: root/test/t/kernel.rb
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-08-30 16:07:59 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-08-30 22:30:36 +0900
commite471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed (patch)
tree9f474e50d1dd921abe1e2611fd33e9e03825d191 /test/t/kernel.rb
parent75a01af710309e4fc53db285c9018e233c61cb56 (diff)
downloadmruby-e471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed.tar.gz
mruby-e471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed.zip
Separate meta-programming features to `mruby-metaprog` gem.
We assume meta-programming is less used in embedded environments. We have moved following methods: * Kernel module global_variables, local_variables, singleton_class, instance_variables, instance_variables_defined?, instance_variable_get, instance_variable_set, methods, private_methods, public_methods, protected_methods, singleton_methods, define_singleton_methods * Module class class_variables, class_variables_defined?, class_variable_get, class_variable_set, remove_class_variable, included_modules, instance_methods, remove_method, method_removed, constants * Module class methods constants, nesting Note: Following meta-programming methods are kept in the core: * Module class alias_method, undef_method, ancestors, const_defined?, const_get, const_set, remove_const, method_defined?, define_method * Toplevel object define_method `mruby-metaprog` gem is linked by default (specified in default.gembox). When it is removed, it will save 40KB (stripped:8KB) on x86-64 environment last time I measured.
Diffstat (limited to 'test/t/kernel.rb')
-rw-r--r--test/t/kernel.rb91
1 files changed, 2 insertions, 89 deletions
diff --git a/test/t/kernel.rb b/test/t/kernel.rb
index 561118302..9744bddba 100644
--- a/test/t/kernel.rb
+++ b/test/t/kernel.rb
@@ -103,7 +103,7 @@ assert('Kernel#__send__', '15.3.1.3.4') do
# test with argument
assert_true __send__(:respond_to?, :nil?)
# test without argument and without block
- assert_equal Array, __send__(:public_methods).class
+ assert_equal String, __send__(:to_s).class
end
assert('Kernel#block_given?', '15.3.1.3.6') do
@@ -278,30 +278,6 @@ assert('Kernel#inspect', '15.3.1.3.17') do
assert_equal "main", s
end
-assert('Kernel#instance_variable_defined?', '15.3.1.3.20') do
- o = Object.new
- o.instance_variable_set(:@a, 1)
-
- assert_true o.instance_variable_defined?("@a")
- assert_false o.instance_variable_defined?("@b")
- assert_true o.instance_variable_defined?("@a"[0,2])
- assert_true o.instance_variable_defined?("@abc"[0,2])
-end
-
-assert('Kernel#instance_variables', '15.3.1.3.23') do
- o = Object.new
- o.instance_eval do
- @a = 11
- @b = 12
- end
- ivars = o.instance_variables
-
- assert_equal Array, ivars.class,
- assert_equal(2, ivars.size)
- assert_true ivars.include?(:@a)
- assert_true ivars.include?(:@b)
-end
-
assert('Kernel#is_a?', '15.3.1.3.24') do
assert_true is_a?(Kernel)
assert_false is_a?(Array)
@@ -381,10 +357,6 @@ assert('Kernel#method_missing', '15.3.1.3.30') do
end
end
-assert('Kernel#methods', '15.3.1.3.31') do
- assert_equal Array, methods.class
-end
-
assert('Kernel#nil?', '15.3.1.3.32') do
assert_false nil?
end
@@ -408,23 +380,6 @@ end
# Kernel#print is defined in mruby-print mrbgem. '15.3.1.3.35'
-assert('Kernel#private_methods', '15.3.1.3.36') do
- assert_equal Array, private_methods.class
-end
-
-assert('Kernel#protected_methods', '15.3.1.3.37') do
- assert_equal Array, protected_methods.class
-end
-
-assert('Kernel#public_methods', '15.3.1.3.38') do
- assert_equal Array, public_methods.class
- class Foo
- def foo
- end
- end
- assert_equal [:foo], Foo.new.public_methods(false)
-end
-
# Kernel#puts is defined in mruby-print mrbgem. '15.3.1.3.39'
assert('Kernel#raise', '15.3.1.3.40') do
@@ -496,46 +451,13 @@ assert('Kernel#send', '15.3.1.3.44') do
# test with argument
assert_true send(:respond_to?, :nil?)
# test without argument and without block
- assert_equal send(:public_methods).class, Array
-end
-
-assert('Kernel#singleton_methods', '15.3.1.3.45') do
- assert_equal singleton_methods.class, Array
+ assert_equal send(:to_s).class, String
end
assert('Kernel#to_s', '15.3.1.3.46') do
assert_equal to_s.class, String
end
-assert('Kernel#to_s on primitives') do
- begin
- Fixnum.alias_method :to_s_, :to_s
- Fixnum.remove_method :to_s
-
- assert_nothing_raised do
- # segfaults if mrb_cptr is used
- 1.to_s
- end
- ensure
- Fixnum.alias_method :to_s, :to_s_
- Fixnum.remove_method :to_s_
- end
-end
-
-assert('Kernel.local_variables', '15.3.1.2.7') do
- a, b = 0, 1
- a += b
-
- vars = Kernel.local_variables.sort
- assert_equal [:a, :b, :vars], vars
-
- assert_equal [:a, :b, :c, :vars], Proc.new { |a, b|
- c = 2
- # Kernel#local_variables: 15.3.1.3.28
- local_variables.sort
- }.call(-1, -2)
-end
-
assert('Kernel#!=') do
str1 = "hello"
str2 = str1
@@ -585,15 +507,6 @@ assert('Kernel#global_variables') do
end
end
-assert('Kernel#define_singleton_method') do
- o = Object.new
- ret = o.define_singleton_method(:test_method) do
- :singleton_method_ok
- end
- assert_equal :test_method, ret
- assert_equal :singleton_method_ok, o.test_method
-end
-
assert('stack extend') do
def recurse(count, stop)
return count if count > stop