mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Improve Kernel Tests
This commit is contained in:
+106
-102
@@ -2,7 +2,7 @@
|
||||
# Kernel ISO Test
|
||||
|
||||
assert('Kernel', '15.3.1') do
|
||||
Kernel.class == Module
|
||||
assert_equal Kernel.class, Module
|
||||
end
|
||||
|
||||
assert('Kernel.block_given?', '15.3.1.2.2') do
|
||||
@@ -14,23 +14,29 @@ assert('Kernel.block_given?', '15.3.1.2.2') do
|
||||
end
|
||||
end
|
||||
|
||||
(Kernel.block_given? == false) and
|
||||
# test without block
|
||||
(bg_try == "no block") and
|
||||
# test with block
|
||||
((bg_try { "block" }) == "block") and
|
||||
# test with block
|
||||
((bg_try do "block" end) == "block")
|
||||
assert_false Kernel.block_given?
|
||||
# test without block
|
||||
assert_equal bg_try, "no block"
|
||||
# test with block
|
||||
assert_equal "block" do
|
||||
bg_try { "block" }
|
||||
end
|
||||
# test with block
|
||||
assert_equal "block" do
|
||||
bg_try do
|
||||
"block"
|
||||
end
|
||||
end
|
||||
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
|
||||
Kernel.global_variables.class == Array
|
||||
assert_equal Kernel.global_variables.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel.iterator?', '15.3.1.2.5') do
|
||||
Kernel.iterator? == false
|
||||
assert_false Kernel.iterator?
|
||||
end
|
||||
|
||||
assert('Kernel.lambda', '15.3.1.2.6') do
|
||||
@@ -40,7 +46,10 @@ assert('Kernel.lambda', '15.3.1.2.6') do
|
||||
|
||||
m = Kernel.lambda(&l)
|
||||
|
||||
l.call and l.class == Proc and m.call and m.class == Proc
|
||||
assert_true l.call
|
||||
assert_equal l.class, Proc
|
||||
assert_true m.call
|
||||
assert_equal m.class, Proc
|
||||
end
|
||||
|
||||
# Not implemented at the moment
|
||||
@@ -56,47 +65,36 @@ assert('Kernel.loop', '15.3.1.2.8') do
|
||||
break if i == 100
|
||||
end
|
||||
|
||||
i == 100
|
||||
assert_equal i, 100
|
||||
end
|
||||
|
||||
assert('Kernel.p', '15.3.1.2.9') do
|
||||
# TODO search for a way to test p to stdio
|
||||
true
|
||||
assert_true true
|
||||
end
|
||||
|
||||
assert('Kernel.print', '15.3.1.2.10') do
|
||||
# TODO search for a way to test print to stdio
|
||||
true
|
||||
assert_true true
|
||||
end
|
||||
|
||||
assert('Kernel.puts', '15.3.1.2.11') do
|
||||
# TODO search for a way to test puts to stdio
|
||||
true
|
||||
assert_true true
|
||||
end
|
||||
|
||||
assert('Kernel.raise', '15.3.1.2.12') do
|
||||
e_list = []
|
||||
|
||||
begin
|
||||
assert_raise RuntimeError do
|
||||
Kernel.raise
|
||||
rescue => e
|
||||
e_list << e
|
||||
end
|
||||
|
||||
begin
|
||||
assert_raise RuntimeError do
|
||||
Kernel.raise RuntimeError.new
|
||||
rescue => e
|
||||
e_list << e
|
||||
end
|
||||
|
||||
# result without argument
|
||||
e_list[0].class == RuntimeError and
|
||||
# result with RuntimeError argument
|
||||
e_list[1].class == RuntimeError
|
||||
end
|
||||
|
||||
assert('Kernel#__id__', '15.3.1.3.3') do
|
||||
__id__.class == Fixnum
|
||||
assert_equal __id__.class, Fixnum
|
||||
end
|
||||
|
||||
assert('Kernel#__send__', '15.3.1.3.4') do
|
||||
@@ -105,11 +103,12 @@ assert('Kernel#__send__', '15.3.1.3.4') do
|
||||
true
|
||||
end
|
||||
|
||||
l.call and l.class == Proc and
|
||||
# test with argument
|
||||
__send__(:respond_to?, :nil?) and
|
||||
# test without argument and without block
|
||||
__send__(:public_methods).class == Array
|
||||
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#block_given?', '15.3.1.3.6') do
|
||||
@@ -121,14 +120,20 @@ assert('Kernel#block_given?', '15.3.1.3.6') do
|
||||
end
|
||||
end
|
||||
|
||||
(block_given? == false) and
|
||||
(bg_try == "no block") and
|
||||
((bg_try { "block" }) == "block") and
|
||||
((bg_try do "block" end) == "block")
|
||||
assert_false block_given?
|
||||
assert_equal bg_try, "no block"
|
||||
assert_equal "block" do
|
||||
bg_try { "block" }
|
||||
end
|
||||
assert_equal "block" do
|
||||
bg_try do
|
||||
"block"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assert('Kernel#class', '15.3.1.3.7') do
|
||||
Kernel.class == Module
|
||||
assert_equal Kernel.class, Module
|
||||
end
|
||||
|
||||
assert('Kernel#clone', '15.3.1.3.8') do
|
||||
@@ -165,10 +170,12 @@ assert('Kernel#clone', '15.3.1.3.8') do
|
||||
end
|
||||
end
|
||||
|
||||
a.get == 2 and b.get == 1 and c.get == 2 &&
|
||||
a.respond_to?(:test) == true and
|
||||
b.respond_to?(:test) == false and
|
||||
c.respond_to?(:test) == true
|
||||
assert_equal a.get, 2
|
||||
assert_equal b.get, 1
|
||||
assert_equal c.get, 2
|
||||
assert_true a.respond_to?(:test)
|
||||
assert_false b.respond_to?(:test)
|
||||
assert_true c.respond_to?(:test)
|
||||
end
|
||||
|
||||
assert('Kernel#dup', '15.3.1.3.9') do
|
||||
@@ -205,11 +212,13 @@ assert('Kernel#dup', '15.3.1.3.9') do
|
||||
end
|
||||
end
|
||||
|
||||
error_count == immutables.size and
|
||||
a.get == 2 and b.get == 1 and c.get == 2 and
|
||||
a.respond_to?(:test) == true and
|
||||
b.respond_to?(:test) == false and
|
||||
c.respond_to?(:test) == false
|
||||
assert_equal error_count, immutables.size
|
||||
assert_equal a.get, 2
|
||||
assert_equal b.get, 1
|
||||
assert_equal c.get, 2
|
||||
assert_true a.respond_to?(:test)
|
||||
assert_false b.respond_to?(:test)
|
||||
assert_false c.respond_to?(:test)
|
||||
end
|
||||
|
||||
# Kernel#eval is provided by mruby-eval mrbgem '15.3.1.3.12'
|
||||
@@ -226,7 +235,8 @@ assert('Kernel#extend', '15.3.1.3.13') do
|
||||
a.extend(Test4ExtendModule)
|
||||
b = Test4ExtendClass.new
|
||||
|
||||
a.respond_to?(:test_method) == true && b.respond_to?(:test_method) == false
|
||||
assert_true a.respond_to?(:test_method)
|
||||
assert_false b.respond_to?(:test_method)
|
||||
end
|
||||
|
||||
assert('Kernel#extend works on toplevel', '15.3.1.3.13') do
|
||||
@@ -236,20 +246,22 @@ assert('Kernel#extend works on toplevel', '15.3.1.3.13') do
|
||||
# This would crash...
|
||||
extend(Test4ExtendModule)
|
||||
|
||||
respond_to?(:test_method) == true
|
||||
assert_true respond_to?(:test_method)
|
||||
end
|
||||
|
||||
assert('Kernel#global_variables', '15.3.1.3.14') do
|
||||
global_variables.class == Array
|
||||
assert_equal global_variables.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel#hash', '15.3.1.3.15') do
|
||||
hash == hash
|
||||
assert_equal hash, hash
|
||||
end
|
||||
|
||||
assert('Kernel#inspect', '15.3.1.3.17') do
|
||||
s = inspect
|
||||
s.class == String and s == "main"
|
||||
|
||||
assert_equal s.class, String
|
||||
assert_equal s, "main"
|
||||
end
|
||||
|
||||
assert('Kernel#instance_variables', '15.3.1.3.23') do
|
||||
@@ -259,19 +271,25 @@ assert('Kernel#instance_variables', '15.3.1.3.23') do
|
||||
@b = 12
|
||||
end
|
||||
ivars = o.instance_variables
|
||||
ivars.class == Array and ivars.size == 2 and ivars.include?(:@a) and ivars.include?(:@b)
|
||||
|
||||
assert_equal ivars.class, Array
|
||||
assert_equal ivars.size, 2
|
||||
assert_true ivars.include?(:@a)
|
||||
assert_true ivars.include?(:@b)
|
||||
end
|
||||
|
||||
assert('Kernel#is_a?', '15.3.1.3.24') do
|
||||
is_a?(Kernel) and not is_a?(Array)
|
||||
assert_true is_a?(Kernel)
|
||||
assert_false is_a?(Array)
|
||||
end
|
||||
|
||||
assert('Kernel#iterator?', '15.3.1.3.25') do
|
||||
iterator? == false
|
||||
assert_false iterator?
|
||||
end
|
||||
|
||||
assert('Kernel#kind_of?', '15.3.1.3.26') do
|
||||
kind_of?(Kernel) and not kind_of?(Array)
|
||||
assert_true kind_of?(Kernel)
|
||||
assert_false kind_of?(Array)
|
||||
end
|
||||
|
||||
assert('Kernel#lambda', '15.3.1.3.27') do
|
||||
@@ -281,7 +299,10 @@ assert('Kernel#lambda', '15.3.1.3.27') do
|
||||
|
||||
m = lambda(&l)
|
||||
|
||||
l.call and l.class == Proc and m.call and m.class == Proc
|
||||
assert_true l.call
|
||||
assert_equal l.class, Proc
|
||||
assert_true m.call
|
||||
assert_equal m.class, Proc
|
||||
end
|
||||
|
||||
# Not implemented yet
|
||||
@@ -297,19 +318,19 @@ assert('Kernel#loop', '15.3.1.3.29') do
|
||||
break if i == 100
|
||||
end
|
||||
|
||||
i == 100
|
||||
assert_equal i, 100
|
||||
end
|
||||
|
||||
assert('Kernel#methods', '15.3.1.3.31') do
|
||||
methods.class == Array
|
||||
assert_equal methods.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel#nil?', '15.3.1.3.32') do
|
||||
nil? == false
|
||||
assert_false nil?
|
||||
end
|
||||
|
||||
assert('Kernel#object_id', '15.3.1.3.33') do
|
||||
object_id.class == Fixnum
|
||||
assert_equal object_id.class, Fixnum
|
||||
end
|
||||
|
||||
# Kernel#p is defined in mruby-print mrbgem. '15.3.1.3.34'
|
||||
@@ -317,45 +338,32 @@ end
|
||||
# Kernel#print is defined in mruby-print mrbgem. '15.3.1.3.35'
|
||||
|
||||
assert('Kernel#private_methods', '15.3.1.3.36') do
|
||||
private_methods.class == Array
|
||||
assert_equal private_methods.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel#protected_methods', '15.3.1.3.37') do
|
||||
protected_methods.class == Array
|
||||
assert_equal protected_methods.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel#public_methods', '15.3.1.3.38') do
|
||||
public_methods.class == Array
|
||||
assert_equal public_methods.class, Array
|
||||
end
|
||||
|
||||
# Kernel#puts is defined in mruby-print mrbgem. '15.3.1.3.39'
|
||||
|
||||
assert('Kernel#raise', '15.3.1.3.40') do
|
||||
e_list = []
|
||||
|
||||
begin
|
||||
assert_raise RuntimeError do
|
||||
raise
|
||||
rescue => e
|
||||
e_list << e
|
||||
end
|
||||
|
||||
begin
|
||||
assert_raise RuntimeError do
|
||||
raise RuntimeError.new
|
||||
rescue => e
|
||||
e_list << e
|
||||
end
|
||||
|
||||
# result without argument
|
||||
e_list[0].class == RuntimeError and
|
||||
# result with RuntimeError argument
|
||||
e_list[1].class == RuntimeError
|
||||
end
|
||||
|
||||
# Kernel#require is defined in mruby-require. '15.3.1.3.42'
|
||||
|
||||
assert('Kernel#respond_to?', '15.3.1.3.43') do
|
||||
e_list = []
|
||||
|
||||
class Test4RespondTo
|
||||
def valid_method; end
|
||||
|
||||
@@ -363,17 +371,14 @@ assert('Kernel#respond_to?', '15.3.1.3.43') do
|
||||
undef test_method
|
||||
end
|
||||
|
||||
begin
|
||||
assert_raise TypeError do
|
||||
Test4RespondTo.new.respond_to?(1)
|
||||
rescue => e
|
||||
e_list << e.class
|
||||
end
|
||||
|
||||
e_list[0] == TypeError and
|
||||
respond_to?(:nil?) and
|
||||
Test4RespondTo.new.respond_to?(:valid_method) == true and
|
||||
Test4RespondTo.new.respond_to?('valid_method') == true and
|
||||
Test4RespondTo.new.respond_to?(:test_method) == false
|
||||
assert_true respond_to?(:nil?)
|
||||
assert_true Test4RespondTo.new.respond_to?(:valid_method)
|
||||
assert_true Test4RespondTo.new.respond_to?('valid_method')
|
||||
assert_false Test4RespondTo.new.respond_to?(:test_method)
|
||||
end
|
||||
|
||||
assert('Kernel#send', '15.3.1.3.44') do
|
||||
@@ -382,19 +387,20 @@ assert('Kernel#send', '15.3.1.3.44') do
|
||||
true
|
||||
end
|
||||
|
||||
l.call and l.class == Proc and
|
||||
# test with argument
|
||||
send(:respond_to?, :nil?) and
|
||||
# test without argument and without block
|
||||
send(:public_methods).class == Array
|
||||
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
|
||||
singleton_methods.class == Array
|
||||
assert_equal singleton_methods.class, Array
|
||||
end
|
||||
|
||||
assert('Kernel#to_s', '15.3.1.3.46') do
|
||||
to_s.class == String
|
||||
assert_equal to_s.class, String
|
||||
end
|
||||
|
||||
assert('Kernel#!=') do
|
||||
@@ -402,20 +408,18 @@ assert('Kernel#!=') do
|
||||
str2 = str1
|
||||
str3 = "world"
|
||||
|
||||
(str1[1] != 'e') == false and
|
||||
(str1 != str3) == true and
|
||||
(str2 != str1) == false
|
||||
assert_false (str1[1] != 'e')
|
||||
assert_true (str1 != str3)
|
||||
assert_false (str2 != str1)
|
||||
end
|
||||
|
||||
assert('Kernel#respond_to_missing?') do
|
||||
|
||||
class Test4RespondToMissing
|
||||
def respond_to_missing?(method_name, include_private = false)
|
||||
method_name == :a_method
|
||||
end
|
||||
end
|
||||
|
||||
Test4RespondToMissing.new.respond_to?(:a_method) == true and
|
||||
Test4RespondToMissing.new.respond_to?(:no_method) == false
|
||||
|
||||
assert_true Test4RespondToMissing.new.respond_to?(:a_method)
|
||||
assert_false Test4RespondToMissing.new.respond_to?(:no_method)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user