mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'master' of github.com:mruby/mruby
This commit is contained in:
@@ -54,3 +54,18 @@ assert('Comparable#>=', '15.3.3.2.5') do
|
||||
(Foo.new >= Foo.new) == true
|
||||
end
|
||||
|
||||
assert('Comparable#between?', '15.3.3.2.6') do
|
||||
class Foo
|
||||
include Comparable
|
||||
def <=>(x)
|
||||
x
|
||||
end
|
||||
end
|
||||
|
||||
c = Foo.new
|
||||
c.between?(-1, 1) == false &&
|
||||
c.between?(-1, -1) == false &&
|
||||
c.between?( 1, 1) == false &&
|
||||
c.between?( 1, -1) == true &&
|
||||
c.between?(0, 0) == true
|
||||
end
|
||||
|
||||
+24
-1
@@ -155,6 +155,16 @@ assert('Kernel#clone', '15.3.1.3.8') do
|
||||
a.set(2)
|
||||
c = a.clone
|
||||
|
||||
immutables = [ 1, :foo, true, false, nil ]
|
||||
error_count = 0
|
||||
immutables.each do |i|
|
||||
begin
|
||||
i.clone
|
||||
rescue TypeError
|
||||
error_count += 1
|
||||
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
|
||||
@@ -185,7 +195,18 @@ assert('Kernel#dup', '15.3.1.3.9') do
|
||||
a.set(2)
|
||||
c = a.dup
|
||||
|
||||
a.get == 2 and b.get == 1 and c.get == 2 and
|
||||
immutables = [ 1, :foo, true, false, nil ]
|
||||
error_count = 0
|
||||
immutables.each do |i|
|
||||
begin
|
||||
i.dup
|
||||
rescue TypeError
|
||||
error_count += 1
|
||||
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
|
||||
@@ -330,6 +351,8 @@ assert('Kernel#raise', '15.3.1.3.40') do
|
||||
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
|
||||
class Test4RespondTo
|
||||
def test_method; end
|
||||
|
||||
@@ -297,6 +297,29 @@ assert('Module#remove_method', '15.2.2.4.41') do
|
||||
not Test4RemoveMethod::Child.instance_methods(false).include? :hello
|
||||
end
|
||||
|
||||
assert('Module.undef_method', '15.2.2.4.42') do
|
||||
module Test4UndefMethod
|
||||
class Parent
|
||||
def hello
|
||||
end
|
||||
end
|
||||
|
||||
class Child < Parent
|
||||
def hello
|
||||
end
|
||||
end
|
||||
|
||||
class GrandChild < Child
|
||||
end
|
||||
end
|
||||
|
||||
Test4UndefMethod::Child.class_eval{ undef_method :hello }
|
||||
|
||||
Test4UndefMethod::Parent.new.respond_to?(:hello) and
|
||||
not Test4UndefMethod::Child.new.respond_to?(:hello) and
|
||||
not Test4UndefMethod::GrandChild.new.respond_to?(:hello)
|
||||
end
|
||||
|
||||
|
||||
# Not ISO specified
|
||||
|
||||
|
||||
+3
-1
@@ -10,6 +10,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <mruby.h>
|
||||
#include "mruby/array.h"
|
||||
#include <mruby/proc.h>
|
||||
#include <mruby/data.h>
|
||||
#include <mruby/compile.h>
|
||||
@@ -236,6 +237,7 @@ main(int argc, char **argv)
|
||||
fputs("Invalid mrb interpreter, exiting mirb\n", stderr);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
mrb_define_global_const(mrb, "ARGV", mrb_ary_new_capa(mrb, 0));
|
||||
|
||||
n = parse_args(mrb, argc, argv, &args);
|
||||
if (n == EXIT_FAILURE) {
|
||||
@@ -337,9 +339,9 @@ main(int argc, char **argv)
|
||||
}
|
||||
ruby_code[0] = '\0';
|
||||
last_code_line[0] = '\0';
|
||||
mrb_parser_free(parser);
|
||||
mrb_gc_arena_restore(mrb, ai);
|
||||
}
|
||||
mrb_parser_free(parser);
|
||||
}
|
||||
mrbc_context_free(mrb, cxt);
|
||||
mrb_close(mrb);
|
||||
|
||||
Reference in New Issue
Block a user