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.rb261
1 files changed, 236 insertions, 25 deletions
diff --git a/test/t/kernel.rb b/test/t/kernel.rb
index cd1f2d99e..b96e85134 100644
--- a/test/t/kernel.rb
+++ b/test/t/kernel.rb
@@ -6,7 +6,21 @@ assert('Kernel', '15.3.1') do
end
assert('Kernel.block_given?', '15.3.1.2.2') do
- Kernel.block_given? == false
+ def bg_try(&b)
+ if Kernel.block_given?
+ yield
+ else
+ "no block"
+ 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")
end
assert('Kernel.global_variables', '15.3.1.2.4') do
@@ -22,13 +36,16 @@ assert('Kernel.lambda', '15.3.1.2.6') do
true
end
- l.call and l.class == Proc
-end
+ m = Kernel.lambda(&l)
-assert('Kernel.local_variables', '15.3.1.2.7') do
- Kernel.local_variables.class == Array
+ l.call and l.class == Proc and m.call and m.class == Proc
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
i = 0
@@ -55,28 +72,182 @@ assert('Kernel.puts', '15.3.1.2.11') do
true
end
-# TODO fails at the moment without arguments
assert('Kernel.raise', '15.3.1.2.12') do
e_list = []
begin
- raise RuntimeError.new
+ Kernel.raise
rescue => e
e_list << e
end
- e_list[0].class == RuntimeError
+ begin
+ 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
+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
+
+assert('Kernel#clone', '15.3.1.3.8') do
+ class KernelCloneTest
+ def initialize
+ @v = 0
+ end
+
+ def get
+ @v
+ end
+
+ def set(v)
+ @v = v
+ end
+ end
+
+ a = KernelCloneTest.new
+ a.set(1)
+ b = a.clone
+
+ def a.test
+ end
+ a.set(2)
+ c = a.clone
+
+ 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
+end
+
+assert('Kernel#dup', '15.3.1.3.9') do
+ class KernelDupTest
+ def initialize
+ @v = 0
+ end
+
+ def get
+ @v
+ end
+
+ def set(v)
+ @v = v
+ end
+ end
+
+ a = KernelDupTest.new
+ a.set(1)
+ b = a.dup
+
+ def a.test
+ end
+ a.set(2)
+ c = a.dup
+
+ 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
+end
+
+assert('Kernel#extend', '15.3.1.3.13') do
+ class Test4ExtendClass
+ end
+
+ module Test4ExtendModule
+ def test_method; end
+ end
+
+ a = Test4ExtendClass.new
+ a.extend(Test4ExtendModule)
+ b = Test4ExtendClass.new
+
+ a.respond_to?(:test_method) == true && b.respond_to?(:test_method) == false
+end
+
+assert('Kernel#global_variables', '15.3.1.3.14') do
+ global_variables.class == Array
end
-assert('Kernel#hash', '15.3.1.2.15') do
+assert('Kernel#hash', '15.3.1.3.15') do
hash == hash
end
-assert('Kernel#local_variables', '15.3.1.2.28') do
- local_variables.class == Array
+assert('Kernel#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#loop', '15.3.1.2.29') do
+assert('Kernel#lambda', '15.3.1.3.27') do
+ l = lambda do
+ true
+ end
+
+ m = lambda(&l)
+
+ l.call and l.class == Proc and m.call and m.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
i = 0
loop do
@@ -87,38 +258,78 @@ assert('Kernel#loop', '15.3.1.2.29') do
i == 100
end
-assert('Kernel#methods', '15.3.1.2.31') do
+assert('Kernel#methods', '15.3.1.3.31') do
methods.class == Array
end
-assert('Kernel#nil?', '15.3.1.2.32') do
- # TODO why is Kernel nil ????
- nil? == true
+assert('Kernel#nil?', '15.3.1.3.32') do
+ nil.nil? == true
+end
+
+assert('Kernel#object_id', '15.3.1.3.33') do
+ object_id.class == Fixnum
end
-assert('Kernel#private_methods', '15.3.1.2.36') do
- private_methods.class == Array
+assert('Kernel#private_methods', '15.3.1.3.36') do
+ private_methods.class == Array
end
-assert('Kernel#protected_methods', '15.3.1.2.37') do
+assert('Kernel#protected_methods', '15.3.1.3.37') do
protected_methods.class == Array
end
-assert('Kernel#public_methods', '15.3.1.2.38') do
+assert('Kernel#public_methods', '15.3.1.3.38') do
public_methods.class == Array
end
-assert('Kernel#respond_to?', '15.3.1.2.43') do
- respond_to? :nil?
+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
+ class Test4RespondTo
+ def test_method; end
+ undef test_method
+ end
+
+ respond_to?(:nil?) and Test4RespondTo.new.respond_to?(:test_method) == false
end
-# TODO at the moment doesn't comply to ISO assert('Kernel#send', '15.3.1.2.44') do
+assert('Kernel#send', '15.3.1.3.44') 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#singleton_methods', '15.3.1.2.45') do
+assert('Kernel#singleton_methods', '15.3.1.3.45') do
singleton_methods.class == Array
end
-assert('Kernel#to_s', '15.3.1.2.46') do
+assert('Kernel#to_s', '15.3.1.3.46') do
# TODO looks strange..
to_s == ''
end