summaryrefslogtreecommitdiffhomepage
path: root/test/t/kernel.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/t/kernel.rb')
-rw-r--r--test/t/kernel.rb145
1 files changed, 25 insertions, 120 deletions
diff --git a/test/t/kernel.rb b/test/t/kernel.rb
index 561118302..ecfb863a8 100644
--- a/test/t/kernel.rb
+++ b/test/t/kernel.rb
@@ -31,10 +31,6 @@ end
# Kernel.eval is provided by the mruby-gem mrbgem. '15.3.1.2.3'
-assert('Kernel.global_variables', '15.3.1.2.4') do
- assert_equal Array, Kernel.global_variables.class
-end
-
assert('Kernel.iterator?', '15.3.1.2.5') do
assert_false Kernel.iterator?
end
@@ -103,7 +99,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
@@ -171,7 +167,7 @@ assert('Kernel#clone', '15.3.1.3.8') do
assert_true a.respond_to?(:test)
assert_false b.respond_to?(:test)
assert_true c.respond_to?(:test)
-
+
a.freeze
d = a.clone
assert_true d.frozen?
@@ -244,6 +240,9 @@ assert('Kernel#extend', '15.3.1.3.13') do
assert_true a.respond_to?(:test_method)
assert_false b.respond_to?(:test_method)
+
+ assert_raise(FrozenError) { Object.new.freeze.extend(Test4ExtendModule) }
+ assert_raise(FrozenError, TypeError) { :sym.extend(Test4ExtendModule) }
end
assert('Kernel#extend works on toplevel', '15.3.1.3.13') do
@@ -261,10 +260,23 @@ assert('Kernel#freeze') do
assert_equal obj, obj.freeze
assert_equal 0, 0.freeze
assert_equal :a, :a.freeze
+ assert_equal true, true.freeze
+ assert_equal false, false.freeze
+ assert_equal nil, nil.freeze
+ skip unless Object.const_defined?(:Float)
+ assert_equal 0.0, 0.0.freeze
end
-assert('Kernel#global_variables', '15.3.1.3.14') do
- assert_equal Array, global_variables.class
+assert('Kernel#frozen?') do
+ assert_false "".frozen?
+ assert_true "".freeze.frozen?
+ assert_true 0.frozen?
+ assert_true :a.frozen?
+ assert_true true.frozen?
+ assert_true false.frozen?
+ assert_true nil.frozen?
+ skip unless Object.const_defined?(:Float)
+ assert_true 0.0.frozen?
end
assert('Kernel#hash', '15.3.1.3.15') do
@@ -278,30 +290,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 +369,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 +392,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
@@ -450,11 +417,12 @@ assert('Kernel#remove_instance_variable', '15.3.1.3.41') do
tri = Test4RemoveInstanceVar.new
assert_equal 99, tri.var
- tri.remove
+ assert_equal 99, tri.remove
assert_equal nil, tri.var
- assert_raise NameError do
- tri.remove
- end
+ assert_raise(NameError) { tri.remove }
+ assert_raise(NameError) { tri.remove_instance_variable(:var) }
+ assert_raise(FrozenError) { tri.freeze.remove }
+ assert_raise(FrozenError, NameError) { :a.remove_instance_variable(:@v) }
end
# Kernel#require is defined in mruby-require. '15.3.1.3.42'
@@ -485,57 +453,10 @@ assert('Kernel#respond_to?', '15.3.1.3.43') do
assert_false Test4RespondTo.new.respond_to?(:test_method)
end
-assert('Kernel#send', '15.3.1.3.44') do
- # test with block
- l = send(:lambda) do
- true
- end
-
- assert_true l.call
- assert_equal l.class, Proc
- # 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
-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
@@ -578,22 +499,6 @@ assert('Kernel#respond_to_missing?') do
assert_false Test4RespondToMissing.new.respond_to?(:no_method)
end
-assert('Kernel#global_variables') do
- variables = global_variables
- 1.upto(9) do |i|
- assert_equal variables.include?(:"$#{i}"), true
- 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