summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--build_config/no-float.rb21
-rw-r--r--mrbgems/mruby-bin-mruby/bintest/mruby.rb7
-rw-r--r--mrbgems/mruby-binding-core/src/binding-core.c5
-rw-r--r--mrbgems/mruby-enum-ext/test/enum.rb9
-rw-r--r--mrbgems/mruby-enum-lazy/test/lazy.rb2
-rw-r--r--mrbgems/mruby-enumerator/test/enumerator.rb4
-rw-r--r--mrbgems/mruby-method/test/method.rb3
-rw-r--r--mrbgems/mruby-pack/test/pack.rb3
-rw-r--r--mrbgems/mruby-random/src/random.c66
-rw-r--r--mrbgems/mruby-random/test/random.rb1
-rw-r--r--mrbgems/mruby-time/src/time.c2
-rw-r--r--mrbgems/mruby-time/test/time.rb28
-rw-r--r--mrblib/numeric.rb4
-rw-r--r--src/numeric.c13
-rw-r--r--test/t/integer.rb40
15 files changed, 100 insertions, 108 deletions
diff --git a/build_config/no-float.rb b/build_config/no-float.rb
index e0738cac4..977bf4e12 100644
--- a/build_config/no-float.rb
+++ b/build_config/no-float.rb
@@ -1,17 +1,22 @@
-# Define cross build settings
-MRuby::CrossBuild.new('no-float') do |conf|
- conf.toolchain
+MRuby::Build.new do |conf|
+ # load specific toolchain settings
+ toolchain :gcc
+
+ # include the GEM box
+ conf.gembox "stdlib"
+ conf.gembox "stdlib-ext"
+ conf.gembox "stdlib-io"
+ conf.gembox "metaprog"
+
+ conf.gem :core => 'mruby-bin-mruby'
+ conf.gem :core => 'mruby-bin-mirb'
# Add configuration
conf.compilers.each do |c|
c.defines << "MRB_NO_FLOAT"
end
- conf.gem :core => "mruby-bin-mruby"
-
- conf.test_runner.command = 'env'
-
conf.enable_debug
-# conf.enable_bintest
conf.enable_test
+ conf.enable_bintest
end
diff --git a/mrbgems/mruby-bin-mruby/bintest/mruby.rb b/mrbgems/mruby-bin-mruby/bintest/mruby.rb
index a1952ca6d..bc25f18c1 100644
--- a/mrbgems/mruby-bin-mruby/bintest/mruby.rb
+++ b/mrbgems/mruby-bin-mruby/bintest/mruby.rb
@@ -44,13 +44,6 @@ assert 'ARGV value' do
assert_mruby("[]\n", "", true, %w[-e p(ARGV)])
end
-assert('float literal') do
- script, bin = Tempfile.new('test.rb'), Tempfile.new('test.mrb')
- File.write script.path, 'p [3.21, 2e308.infinite?, -2e308.infinite?]'
- system "#{cmd('mrbc')} -g -o #{bin.path} #{script.path}"
- assert_equal "[3.21, 1, -1]", `#{cmd('mruby')} #{bin.path}`.chomp!
-end
-
assert '__END__', '8.6' do
script = Tempfile.new('test.rb')
diff --git a/mrbgems/mruby-binding-core/src/binding-core.c b/mrbgems/mruby-binding-core/src/binding-core.c
index 209da8bf9..1454f5945 100644
--- a/mrbgems/mruby-binding-core/src/binding-core.c
+++ b/mrbgems/mruby-binding-core/src/binding-core.c
@@ -188,10 +188,8 @@ binding_source_location(mrb_state *mrb, mrb_value self)
if (!proc || MRB_PROC_CFUNC_P(proc) ||
!proc->upper || MRB_PROC_CFUNC_P(proc->upper)) {
srcloc = mrb_nil_value();
- goto cache_source_location;
}
-
- {
+ else {
const mrb_irep *irep = proc->upper->body.irep;
mrb_int pc = binding_extract_pc(mrb, self);
if (pc < 0) {
@@ -210,7 +208,6 @@ binding_source_location(mrb_state *mrb, mrb_value self)
}
}
-cache_source_location:
if (!mrb_frozen_p(mrb_obj_ptr(self))) {
mrb_iv_set(mrb, self, MRB_SYM(source_location), srcloc);
}
diff --git a/mrbgems/mruby-enum-ext/test/enum.rb b/mrbgems/mruby-enum-ext/test/enum.rb
index f0301a2d9..31181fe1a 100644
--- a/mrbgems/mruby-enum-ext/test/enum.rb
+++ b/mrbgems/mruby-enum-ext/test/enum.rb
@@ -100,7 +100,6 @@ end
assert("Enumerable#none?") do
assert_true %w(ant bear cat).none? { |word| word.length == 5 }
assert_false %w(ant bear cat).none? { |word| word.length >= 4 }
- assert_false [1, 3.14, 42].none?(Float)
assert_true [].none?
assert_true [nil, false].none?
assert_false [nil, true].none?
@@ -110,21 +109,21 @@ assert("Enumerable#one?") do
assert_true %w(ant bear cat).one? { |word| word.length == 4 }
assert_false %w(ant bear cat).one? { |word| word.length > 4 }
assert_false %w(ant bear cat).one? { |word| word.length < 4 }
- assert_true [1, 3.14, 42].one?(Float)
assert_false [nil, true, 99].one?
assert_true [nil, true, false].one?
assert_true [ nil, true, 99 ].one?(Integer)
assert_false [].one?
+ assert_true [nil, true, false].one?(NilClass)
end
assert("Enumerable#all? (enhancement)") do
- assert_false [1, 2, 3.14].all?(Integer)
- assert_true [1, 2, 3.14].all?(Numeric)
+ assert_false [1, 2, nil].all?(Integer)
+ assert_true [1, 2, 3].all?(Numeric)
end
assert("Enumerable#any? (enhancement)") do
- assert_false [1, 2, 3].all?(Float)
assert_true [nil, true, 99].any?(Integer)
+ assert_false [1, 2, 3].any?(Array)
end
assert("Enumerable#each_with_object") do
diff --git a/mrbgems/mruby-enum-lazy/test/lazy.rb b/mrbgems/mruby-enum-lazy/test/lazy.rb
index 1a55d30cf..e8277f3d3 100644
--- a/mrbgems/mruby-enum-lazy/test/lazy.rb
+++ b/mrbgems/mruby-enum-lazy/test/lazy.rb
@@ -41,7 +41,7 @@ assert("Enumerator::Lazy laziness") do
end
assert("Enumerator::Lazy#to_enum") do
- lazy_enum = (0..Float::INFINITY).lazy.to_enum(:each_slice, 2)
+ lazy_enum = (0..).lazy.to_enum(:each_slice, 2)
assert_kind_of Enumerator::Lazy, lazy_enum
assert_equal [0*1, 2*3, 4*5, 6*7], lazy_enum.map { |a| a.first * a.last }.first(4)
end
diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb
index fa70f9eea..3e0c6c3be 100644
--- a/mrbgems/mruby-enumerator/test/enumerator.rb
+++ b/mrbgems/mruby-enumerator/test/enumerator.rb
@@ -552,10 +552,10 @@ assert 'Range#each' do
end
assert 'Enumerable#zip' do
- assert_equal [[1, 10], [2, 11], [3, 12]], [1,2,3].zip(10..Float::INFINITY)
+ assert_equal [[1, 10], [2, 11], [3, 12]], [1,2,3].zip(10..)
ret = []
- assert_equal nil, [1,2,3].zip(10..Float::INFINITY) { |i| ret << i }
+ assert_equal nil, [1,2,3].zip(10..) { |i| ret << i }
assert_equal [[1, 10], [2, 11], [3, 12]], ret
assert_raise(TypeError) { [1].zip(1) }
diff --git a/mrbgems/mruby-method/test/method.rb b/mrbgems/mruby-method/test/method.rb
index a7db20031..675277726 100644
--- a/mrbgems/mruby-method/test/method.rb
+++ b/mrbgems/mruby-method/test/method.rb
@@ -406,8 +406,9 @@ end
assert 'UnboundMethod#==' do
assert_false(Integer.instance_method(:+) == Integer.instance_method(:-))
assert_true(Integer.instance_method(:+) == Integer.instance_method(:+))
- assert_false(Integer.instance_method(:+) == Float.instance_method(:+))
assert_true(UnboundMethod.instance_method(:==) == UnboundMethod.instance_method(:eql?))
+ skip unless Object.const_defined?(:Float)
+ assert_false(Integer.instance_method(:+) == Float.instance_method(:+))
end
assert 'UnboundMethod#super_method' do
diff --git a/mrbgems/mruby-pack/test/pack.rb b/mrbgems/mruby-pack/test/pack.rb
index 6832adcc7..a248174a5 100644
--- a/mrbgems/mruby-pack/test/pack.rb
+++ b/mrbgems/mruby-pack/test/pack.rb
@@ -1,3 +1,4 @@
+# coding: utf-8
PACK_IS_LITTLE_ENDIAN = "\x01\00".unpack('S')[0] == 0x01
def assert_pack tmpl, packed, unpacked
@@ -91,6 +92,7 @@ assert('issue #1') do
end
assert 'pack float' do
+ skip unless Object.const_defined?(:Float)
assert_pack 'e', "\x00\x00@@", [3.0]
assert_pack 'g', "@@\x00\x00", [3.0]
@@ -104,6 +106,7 @@ assert 'pack float' do
end
assert 'pack double' do
+ skip unless Object.const_defined?(:Float)
assert_pack 'E', "\x00\x00\x00\x00\x00\x00\b@", [3.0]
assert_pack 'G', "@\b\x00\x00\x00\x00\x00\x00", [3.0]
diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c
index 67c6395d7..9712fbd7e 100644
--- a/mrbgems/mruby-random/src/random.c
+++ b/mrbgems/mruby-random/src/random.c
@@ -120,43 +120,33 @@ rand_real(rand_state *t)
#endif
static mrb_value
-random_rand(mrb_state *mrb, rand_state *t, mrb_value max)
+random_rand(mrb_state *mrb, rand_state *t, mrb_int max)
{
- mrb_value value;
-
- if (mrb_integer(max) == 0) {
+ if (max == 0) {
#ifndef MRB_NO_FLOAT
- value = mrb_float_value(mrb, rand_real(t));
+ return mrb_float_value(mrb, rand_real(t));
#else
- mrb_raise(mrb, E_ARGUMENT_ERROR, "Float not supported");
+ max = 100;
#endif
}
- else {
- value = mrb_int_value(mrb, rand_uint32(t) % mrb_integer(max));
- }
+ return mrb_int_value(mrb, rand_uint32(t) % max);
+}
- return value;
+static mrb_int
+random_rand_i(mrb_state *mrb, rand_state *t, mrb_int max)
+{
+ return rand_uint32(t) % max;
}
-static mrb_value
+static mrb_int
get_opt(mrb_state* mrb)
{
- mrb_value arg;
+ mrb_int arg;
- arg = mrb_nil_value();
- mrb_get_args(mrb, "|o", &arg);
-
- if (!mrb_nil_p(arg)) {
- mrb_int i;
-
- arg = mrb_to_int(mrb, arg);
- i = mrb_integer(arg);
- if (i < 0) {
- if (i == MRB_INT_MIN) {
- mrb_raise(mrb, E_RANGE_ERROR, "integer underflow");
- }
- arg = mrb_fixnum_value(0 - i);
- }
+ arg = 0;
+ mrb_get_args(mrb, "|i", &arg);
+ if (arg < 0) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "invalid argument");
}
return arg;
}
@@ -185,17 +175,15 @@ random_default(mrb_state *mrb) {
static mrb_value
random_m_init(mrb_state *mrb, mrb_value self)
{
- mrb_value seed;
+ mrb_int seed;
rand_state *t;
- seed = get_opt(mrb);
- /* avoid memory leaks */
t = random_ptr(self);
- if (mrb_nil_p(seed)) {
+ if (mrb_get_args(mrb, "|i", &seed) == 0) {
rand_init(t);
}
else {
- rand_seed(t, (uint32_t)mrb_integer(seed));
+ rand_seed(t, (uint32_t)seed);
}
return self;
@@ -204,7 +192,7 @@ random_m_init(mrb_state *mrb, mrb_value self)
static mrb_value
random_m_rand(mrb_state *mrb, mrb_value self)
{
- mrb_value max;
+ mrb_int max;
rand_state *t = random_ptr(self);
max = get_opt(mrb);
@@ -216,15 +204,14 @@ random_m_srand(mrb_state *mrb, mrb_value self)
{
uint32_t seed;
uint32_t old_seed;
- mrb_value sv;
+ mrb_int i;
rand_state *t = random_ptr(self);
- sv = get_opt(mrb);
- if (mrb_nil_p(sv)) {
+ if (mrb_get_args(mrb, "|i", &i) == 0) {
seed = (uint32_t)time(NULL) + rand_uint32(t);
}
else {
- seed = (uint32_t)mrb_integer(sv);
+ seed = (uint32_t)i;
}
old_seed = rand_seed(t, seed);
@@ -241,8 +228,7 @@ random_m_srand(mrb_state *mrb, mrb_value self)
static mrb_value
mrb_ary_shuffle_bang(mrb_state *mrb, mrb_value ary)
{
- mrb_int i;
- mrb_value max;
+ mrb_int i, max;
mrb_value r = mrb_nil_value();
rand_state *random;
@@ -285,13 +271,13 @@ mrb_ary_shuffle_bang(mrb_state *mrb, mrb_value ary)
random = random_ptr(r);
}
mrb_ary_modify(mrb, mrb_ary_ptr(ary));
- max = mrb_fixnum_value(RARRAY_LEN(ary));
+ max = RARRAY_LEN(ary);
for (i = RARRAY_LEN(ary) - 1; i > 0; i--) {
mrb_int j;
mrb_value *ptr = RARRAY_PTR(ary);
mrb_value tmp;
- j = mrb_integer(random_rand(mrb, random, max));
+ j = random_rand_i(mrb, random, max);
tmp = ptr[i];
ptr[i] = ptr[j];
diff --git a/mrbgems/mruby-random/test/random.rb b/mrbgems/mruby-random/test/random.rb
index f3067748b..37583c5d3 100644
--- a/mrbgems/mruby-random/test/random.rb
+++ b/mrbgems/mruby-random/test/random.rb
@@ -34,6 +34,7 @@ end
assert("return class of Kernel.rand") do
assert_kind_of(Integer, rand(3))
assert_kind_of(Integer, rand(1.5))
+ skip unless Object.const_defined?(:Float)
assert_kind_of(Float, rand)
assert_kind_of(Float, rand(0.5))
end
diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c
index 44bea5ffa..2a5e9dd6b 100644
--- a/mrbgems/mruby-time/src/time.c
+++ b/mrbgems/mruby-time/src/time.c
@@ -226,6 +226,7 @@ typedef mrb_int mrb_sec;
(sizeof(time_t) <= 4 ? INT32_MAX : INT64_MAX) \
)
+#ifndef MRB_NO_FLOAT
/* return true if time_t is fit in mrb_int */
static mrb_bool
fixable_time_t_p(time_t v)
@@ -236,6 +237,7 @@ fixable_time_t_p(time_t v)
if (MRB_INT_MIN > (mrb_int)v) return FALSE;
return TRUE;
}
+#endif
static time_t
mrb_to_time_t(mrb_state *mrb, mrb_value obj, time_t *usec)
diff --git a/mrbgems/mruby-time/test/time.rb b/mrbgems/mruby-time/test/time.rb
index be1de7bc6..e239dec28 100644
--- a/mrbgems/mruby-time/test/time.rb
+++ b/mrbgems/mruby-time/test/time.rb
@@ -12,6 +12,7 @@ end
assert('Time.at', '15.2.19.6.1') do
assert_kind_of(Time, Time.at(1300000000.0))
+ skip unless Object.const_defined?(:Float)
assert_raise(FloatDomainError) { Time.at(Float::NAN) }
assert_raise(FloatDomainError) { Time.at(Float::INFINITY) }
assert_raise(FloatDomainError) { Time.at(-Float::INFINITY) }
@@ -69,31 +70,33 @@ assert('Time.utc', '15.2.19.6.6') do
end
assert('Time#+', '15.2.19.7.1') do
- t1 = Time.at(1300000000.0)
+ t1 = Time.at(1300000000)
t2 = t1.+(60)
assert_equal("Sun Mar 13 07:07:40 2011", t2.utc.asctime)
+ skip unless Object.const_defined?(:Float)
assert_raise(FloatDomainError) { Time.at(0) + Float::NAN }
assert_raise(FloatDomainError) { Time.at(0) + Float::INFINITY }
assert_raise(FloatDomainError) { Time.at(0) + -Float::INFINITY }
end
assert('Time#-', '15.2.19.7.2') do
- t1 = Time.at(1300000000.0)
+ t1 = Time.at(1300000000)
t2 = t1.-(60)
assert_equal("Sun Mar 13 07:05:40 2011", t2.utc.asctime)
+ skip unless Object.const_defined?(:Float)
assert_raise(FloatDomainError) { Time.at(0) - Float::NAN }
assert_raise(FloatDomainError) { Time.at(0) - Float::INFINITY }
assert_raise(FloatDomainError) { Time.at(0) - -Float::INFINITY }
end
assert('Time#<=>', '15.2.19.7.3') do
- t1 = Time.at(1300000000.0)
- t2 = Time.at(1400000000.0)
- t3 = Time.at(1500000000.0)
+ t1 = Time.at(1300000000)
+ t2 = Time.at(1400000000)
+ t3 = Time.at(1500000000)
assert_equal(1, t2 <=> t1)
assert_equal(0, t2 <=> t2)
@@ -118,7 +121,7 @@ assert('Time#dst?', '15.2.19.7.7') do
end
assert('Time#getgm', '15.2.19.7.8') do
- assert_equal("Sun Mar 13 07:06:40 2011", Time.at(1300000000.0).getgm.asctime)
+ assert_equal("Sun Mar 13 07:06:40 2011", Time.at(1300000000).getgm.asctime)
end
assert('Time#getlocal', '15.2.19.7.9') do
@@ -131,11 +134,11 @@ assert('Time#getlocal', '15.2.19.7.9') do
end
assert('Time#getutc', '15.2.19.7.10') do
- assert_equal("Sun Mar 13 07:06:40 2011", Time.at(1300000000.0).getutc.asctime)
+ assert_equal("Sun Mar 13 07:06:40 2011", Time.at(1300000000).getutc.asctime)
end
assert('Time#gmt?', '15.2.19.7.11') do
- assert_predicate(Time.at(1300000000.0).utc, :gmt?)
+ assert_predicate(Time.at(1300000000).utc, :gmt?)
end
# ATM not implemented
@@ -192,14 +195,17 @@ assert('Times#sec', '15.2.19.7.23') do
end
assert('Time#to_f', '15.2.19.7.24') do
+ skip unless Object.const_defined?(:Float)
assert_operator(2.0, :eql?, Time.at(2).to_f)
end
assert('Time#to_i', '15.2.19.7.25') do
- assert_operator(2, :eql?, Time.at(2.0).to_i)
+ assert_operator(2, :eql?, Time.at(2).to_i)
end
assert('Time#usec', '15.2.19.7.26') do
+ assert_equal(0, Time.at(1300000000).usec)
+ skip unless Object.const_defined?(:Float)
assert_equal(0, Time.at(1300000000.0).usec)
end
@@ -210,7 +216,7 @@ assert('Time#utc', '15.2.19.7.27') do
end
assert('Time#utc?', '15.2.19.7.28') do
- assert_predicate(Time.at(1300000000.0).utc, :utc?)
+ assert_predicate(Time.at(1300000000).utc, :utc?)
end
# ATM not implemented
@@ -229,7 +235,7 @@ assert('Time#year', '15.2.19.7.32') do
end
assert('Time#zone', '15.2.19.7.33') do
- assert_equal('UTC', Time.at(1300000000.0).utc.zone)
+ assert_equal('UTC', Time.at(1300000000).utc.zone)
end
# Not ISO specified
diff --git a/mrblib/numeric.rb b/mrblib/numeric.rb
index 1bce9c204..71f788b83 100644
--- a/mrblib/numeric.rb
+++ b/mrblib/numeric.rb
@@ -130,7 +130,7 @@ class Integer
# Returns the receiver simply.
#
# ISO 15.2.8.3.14
- def ceil
+ def ceil(n=0)
self
end
@@ -138,7 +138,7 @@ class Integer
# Returns the receiver simply.
#
# ISO 15.2.8.3.17
- def floor
+ def floor(n=0)
self
end
diff --git a/src/numeric.c b/src/numeric.c
index dfd5e14eb..fe1a18f04 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -76,12 +76,13 @@ int_zerodiv(mrb_state *mrb)
static mrb_value
int_pow(mrb_state *mrb, mrb_value x)
{
- mrb_value y = mrb_get_arg1(mrb);
mrb_int base = mrb_integer(x);
mrb_int result = 1;
mrb_int exp;
#ifndef MRB_NO_FLOAT
+ mrb_value y = mrb_get_arg1(mrb);
+
if (mrb_float_p(y)) {
return mrb_float_value(mrb, pow((double)base, mrb_float(y)));
}
@@ -136,7 +137,9 @@ mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y)
return 0;
}
+#ifndef MRB_NO_FLOAT
mrb_float mrb_div_flo(mrb_float x, mrb_float y);
+#endif
/* 15.2.8.3.4 */
/* 15.2.9.3.4 */
@@ -1607,12 +1610,12 @@ cmpnum(mrb_state *mrb, mrb_value v1, mrb_value v2)
case MRB_TT_FLOAT:
y = mrb_float(v2);
break;
-#endif
#ifdef MRB_USE_RATIONAL
case MRB_TT_RATIONAL:
y = mrb_to_flo(mrb, v2);
break;
#endif
+#endif
default:
return -2;
}
@@ -1762,12 +1765,6 @@ mrb_init_numeric(mrb_state *mrb)
mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */
mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE());
-#ifndef MRB_NO_FLOAT
- mrb_define_method(mrb, integer, "ceil", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.14 */
- mrb_define_method(mrb, integer, "floor", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.17 */
- mrb_define_method(mrb, integer, "round", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.20 */
- mrb_define_method(mrb, integer, "truncate", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.26 */
-#endif
mrb_define_method(mrb, integer, "+", int_add, MRB_ARGS_REQ(1)); /* 15.2.8.3.1 */
mrb_define_method(mrb, integer, "-", int_sub, MRB_ARGS_REQ(1)); /* 15.2.8.3.2 */
diff --git a/test/t/integer.rb b/test/t/integer.rb
index 2523d2631..d4076f38a 100644
--- a/test/t/integer.rb
+++ b/test/t/integer.rb
@@ -37,40 +37,42 @@ end
assert('Integer#/', '15.2.8.3.4') do
a = 2/1
- b = 2/1.0
-
assert_equal 2, a
+ a = 5/2
+ assert_equal 2, a
+ skip unless Object.const_defined?(:Float)
+ b = 2/1.0
assert_equal 2.0, b
end
assert('Integer#quo') do
a = 6.quo(5)
-
assert_equal 1.2, a
-end
+end if Object.const_defined?(:Float)
assert('Integer#%', '15.2.8.3.5') do
a = 1%1
- b = 1%1.0
- c = 2%4
- d = 2%5
- e = 2%-5
- f = -2%5
- g = -2%-5
- h = 2%-2
- i = -2%2
- j = -2%-2
+ b = 2%4
+ c = 2%5
+ d = 2%-5
+ e = -2%5
+ f = -2%-5
+ g = 2%-2
+ h = -2%2
+ i = -2%-2
assert_equal 0, a
- assert_equal 0.0, b
+ assert_equal 2, b
assert_equal 2, c
- assert_equal 2, d
- assert_equal(-3, e)
- assert_equal 3, f
- assert_equal(-2, g)
+ assert_equal(-3, d)
+ assert_equal 3, e
+ assert_equal(-2, f)
+ assert_equal 0, g
assert_equal 0, h
assert_equal 0, i
- assert_equal 0, j
+ skip unless Object.const_defined?(:Float)
+ j = 1%1.0
+ assert_equal 0.0, j
end
assert('Integer#<=>', '15.2.9.3.6') do