summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-19 13:34:51 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-04-19 13:34:51 +0000
commit2f491ea20267b93ec6b491c26001d9f8e5bf7008 (patch)
treebf717df3548e24fb0cbf5ab5a96b925f1920c2dc
parent33f7764bbfcad692bbfb9ca0edf4594f58a9be5a (diff)
merges r23075 from trunk into ruby_1_9_1.
-- * time.c (time_cmp): negate the result of reverse comparison. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@23227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--test/ruby/test_time.rb10
-rw-r--r--time.c2
3 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 1893a81906..9bf9a56b04 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Mar 27 01:33:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_cmp): negate the result of reverse comparison.
+
Fri Mar 27 01:19:50 2009 Tanaka Akira <akr@fsij.org>
* bignum.c (rb_cmpint): FIX2INT may fail on LP64 platforms.
diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb
index b56fae0839..c159ce724c 100644
--- a/test/ruby/test_time.rb
+++ b/test/ruby/test_time.rb
@@ -1,6 +1,7 @@
require 'test/unit'
require 'rational'
require 'timeout'
+require 'delegate'
class TestTime < Test::Unit::TestCase
def setup
@@ -470,4 +471,13 @@ class TestTime < Test::Unit::TestCase
assert_equal("JAN", T2000.strftime("%#h"))
assert_equal("FRIDAY", Time.local(2008,1,4).strftime("%#A"))
end
+
+ def test_delegate
+ d1 = SimpleDelegator.new(t1 = Time.utc(2000))
+ d2 = SimpleDelegator.new(t2 = Time.utc(2001))
+ assert_equal(-1, t1 <=> t2)
+ assert_equal(1, t2 <=> t1)
+ assert_equal(-1, d1 <=> d2)
+ assert_equal(1, d2 <=> d1)
+ end
end
diff --git a/time.c b/time.c
index fe70b2d12f..32cb27257a 100644
--- a/time.c
+++ b/time.c
@@ -1109,7 +1109,7 @@ time_cmp(VALUE time1, VALUE time2)
cmp = rb_funcall(time2, rb_intern("<=>"), 1, time1);
if (NIL_P(cmp)) return Qnil;
- n = rb_cmpint(cmp, time1, time2);
+ n = -rb_cmpint(cmp, time1, time2);
if (n == 0) return INT2FIX(0);
if (n > 0) return INT2FIX(1);
return INT2FIX(-1);