Commit d3bf659b authored by Daniel Bovensiepen's avatar Daniel Bovensiepen

Add more kernel tests

parent 6410cdf3
...@@ -7,13 +7,20 @@ end ...@@ -7,13 +7,20 @@ end
assert('Kernel.block_given?', '15.3.1.2.2') do assert('Kernel.block_given?', '15.3.1.2.2') do
def bg_try(&b) def bg_try(&b)
if block_given? if Kernel.block_given?
yield yield
else else
"no block" "no block"
end end
end end
(Kernel.block_given? == false) && (bg_try == "no block") && ((bg_try { "block" }) == "block") && ((bg_try do "block" end) == "block")
(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")
end end
assert('Kernel.global_variables', '15.3.1.2.4') do assert('Kernel.global_variables', '15.3.1.2.4') do
...@@ -32,6 +39,11 @@ assert('Kernel.lambda', '15.3.1.2.6') do ...@@ -32,6 +39,11 @@ assert('Kernel.lambda', '15.3.1.2.6') do
l.call and l.class == Proc l.call and l.class == Proc
end end
# Not implemented at the moment
#assert('Kernel.local_variables', '15.3.1.2.7') do
# Kernel.local_variables.class == Array
#end
assert('Kernel.loop', '15.3.1.2.8') do assert('Kernel.loop', '15.3.1.2.8') do
i = 0 i = 0
...@@ -58,17 +70,61 @@ assert('Kernel.puts', '15.3.1.2.11') do ...@@ -58,17 +70,61 @@ assert('Kernel.puts', '15.3.1.2.11') do
true true
end end
# TODO fails at the moment without arguments
assert('Kernel.raise', '15.3.1.2.12') do assert('Kernel.raise', '15.3.1.2.12') do
e_list = [] e_list = []
begin begin
raise RuntimeError.new Kernel.raise
rescue => e
e_list << e
end
begin
Kernel.raise RuntimeError.new
rescue => e rescue => e
e_list << e e_list << e
end end
e_list[0].class == RuntimeError # 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
end
assert('Kernel#__send__', '15.3.1.3.4') do
# test with block
l = __send__(:lambda) 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
end
assert('Kernel#block_given?', '15.3.1.3.6') do
def bg_try(&b)
if block_given?
yield
else
"no block"
end
end
(block_given? == false) and
(bg_try == "no block") and
((bg_try { "block" }) == "block") and
((bg_try do "block" end) == "block")
end
assert('Kernel#class', '15.3.1.3.7') do
Kernel.class == Module
end end
assert('Kernel#clone', '15.3.1.3.8') do assert('Kernel#clone', '15.3.1.3.8') do
...@@ -95,8 +151,10 @@ assert('Kernel#clone', '15.3.1.3.8') do ...@@ -95,8 +151,10 @@ assert('Kernel#clone', '15.3.1.3.8') do
a.set(2) a.set(2)
c = a.clone c = a.clone
a.get == 2 && b.get == 1 && c.get == 2 && a.get == 2 and b.get == 1 and c.get == 2 &&
a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == true a.respond_to?(:test) == true and
b.respond_to?(:test) == false and
c.respond_to?(:test) == true
end end
assert('Kernel#dup', '15.3.1.3.9') do assert('Kernel#dup', '15.3.1.3.9') do
...@@ -123,14 +181,53 @@ assert('Kernel#dup', '15.3.1.3.9') do ...@@ -123,14 +181,53 @@ assert('Kernel#dup', '15.3.1.3.9') do
a.set(2) a.set(2)
c = a.dup c = a.dup
a.get == 2 && b.get == 1 && c.get == 2 && a.get == 2 and b.get == 1 and c.get == 2 and
a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == false a.respond_to?(:test) == true and
b.respond_to?(:test) == false and
c.respond_to?(:test) == false
end
assert('global_variables', '15.3.1.3.14') do
global_variables.class == Array
end end
assert('Kernel#hash', '15.3.1.3.15') do assert('Kernel#hash', '15.3.1.3.15') do
hash == hash hash == hash
end end
assert('inspect', '15.3.1.3.17') do
inspect.class == String
end
assert('Kernel#instance_variables', '15.3.1.3.23') do
instance_variables.class == Array
end
assert('Kernel#is_a?', '15.3.1.3.24') do
is_a?(Kernel) and not is_a?(Array)
end
assert('Kernel#iterator?', '15.3.1.3.25') do
iterator? == false
end
assert('Kernel#kind_of?', '15.3.1.3.26') do
kind_of?(Kernel) and not kind_of?(Array)
end
assert('Kernel#lambda', '15.3.1.3.27') do
l = lambda do
true
end
l.call and l.class == Proc
end
# Not implemented yet
#assert('Kernel#local_variables', '15.3.1.3.28') do
# local_variables.class == Array
#end
assert('Kernel#loop', '15.3.1.3.29') do assert('Kernel#loop', '15.3.1.3.29') do
i = 0 i = 0
...@@ -150,6 +247,10 @@ assert('Kernel#nil?', '15.3.1.3.32') do ...@@ -150,6 +247,10 @@ assert('Kernel#nil?', '15.3.1.3.32') do
nil.nil? == true nil.nil? == true
end end
assert('Kernel#object_id', '15.3.1.3.33') do
object_id.class == Fixnum
end
assert('Kernel#private_methods', '15.3.1.3.36') do assert('Kernel#private_methods', '15.3.1.3.36') do
private_methods.class == Array private_methods.class == Array
end end
...@@ -162,6 +263,27 @@ assert('Kernel#public_methods', '15.3.1.3.38') do ...@@ -162,6 +263,27 @@ assert('Kernel#public_methods', '15.3.1.3.38') do
public_methods.class == Array public_methods.class == Array
end end
assert('Kernel.raise', '15.3.1.3.40') do
e_list = []
begin
raise
rescue => e
e_list << e
end
begin
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#respond_to?', '15.3.1.3.43') do assert('Kernel#respond_to?', '15.3.1.3.43') do
respond_to? :nil? respond_to? :nil?
end end
...@@ -171,6 +293,7 @@ assert('Kernel#send', '15.3.1.3.44') do ...@@ -171,6 +293,7 @@ assert('Kernel#send', '15.3.1.3.44') do
l = send(:lambda) do l = send(:lambda) do
true true
end end
l.call and l.class == Proc and l.call and l.class == Proc and
# test with argument # test with argument
send(:respond_to?, :nil?) and send(:respond_to?, :nil?) and
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment