[前][次][番号順一覧][スレッド一覧]

ruby-changes:6362

From: suke <ko1@a...>
Date: Fri, 4 Jul 2008 23:21:16 +0900 (JST)
Subject: [ruby-changes:6362] Ruby:r17878 (trunk): * ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE

suke	2008-07-04 23:19:01 +0900 (Fri, 04 Jul 2008)

  New Revision: 17878

  Modified files:
    trunk/ChangeLog
    trunk/ext/win32ole/win32ole.c
    trunk/test/win32ole/test_win32ole_variant.rb

  Log:
    * ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE 
      to String conversion when negative value.
      
    * test/win32ole/test_win32ole_variant.rb: ditto.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17878

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17877)
+++ ChangeLog	(revision 17878)
@@ -1,3 +1,10 @@
+Fri Jul  4 23:12:53 2008  Masaki Suketa  <masaki.suketa@n...>
+
+	* ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE 
+	  to String conversion when negative value.
+	  
+	* test/win32ole/test_win32ole_variant.rb: ditto.
+
 Fri Jul  4 22:15:29 2008  Tanaka Akira  <akr@f...>
 
 	* lib/test/unit/testcase.rb: collect decendants of
Index: ext/win32ole/win32ole.c
===================================================================
--- ext/win32ole/win32ole.c	(revision 17877)
+++ ext/win32ole/win32ole.c	(revision 17878)
@@ -24,6 +24,7 @@
 #include <olectl.h>
 #include <ole2.h>
 #include <stdlib.h>
+#include <math.h>
 #ifdef HAVE_STDARG_PROTOTYPES
 #include <stdarg.h>
 #define va_init_list(a,b) va_start(a,b)
@@ -117,7 +118,7 @@
 
 #define WC2VSTR(x) ole_wc2vstr((x), TRUE)
 
-#define WIN32OLE_VERSION "1.1.8"
+#define WIN32OLE_VERSION "1.1.9"
 
 typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
     (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
@@ -763,7 +764,7 @@
     double d_hh, d_mm, d_ss;
     int    i_hh, i_mm, i_ss;
 
-    double d = v * 86400.0;
+    double d = fabs(v * 86400.0);
 
     d_hh = d / 3600.0;
     i_hh = (int)d_hh;
Index: test/win32ole/test_win32ole_variant.rb
===================================================================
--- test/win32ole/test_win32ole_variant.rb	(revision 17877)
+++ test/win32ole/test_win32ole_variant.rb	(revision 17878)
@@ -540,6 +540,44 @@
       }
     end
 
+    def test_conversion_vt_date
+      obj = WIN32OLE_VARIANT.new(-657434, WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("0100/01/01 00:00:00", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("1500/12/29 23:59:59", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1500/12/29 23:59:59", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("1500/12/30 00:00:00", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1500/12/30 00:00:00", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("1500/12/30 00:00:01", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1500/12/30 00:00:01", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("1899/12/29 23:59:59", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1899/12/29 23:59:59", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("1899/12/30 00:00:00", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1899/12/30 00:00:00", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("1899/12/30 00:00:01", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1899/12/30 00:00:01", obj.value)
+
+      obj = WIN32OLE_VARIANT.new(0, WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("1899/12/30 00:00:00", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("2008/12/29 23:59:59", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("2008/12/29 23:59:59", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("2008/12/30 00:00:00", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("2008/12/30 00:00:00", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("2008/12/30 00:00:01", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("2008/12/30 00:00:01", obj.value)
+
+      obj = WIN32OLE_VARIANT.new("9999/12/31 23:59:59", WIN32OLE::VARIANT::VT_DATE)
+      assert_equal("9999/12/31 23:59:59", obj.value)
+    end
+
     def test_create_nil_dispatch
       var = WIN32OLE_VARIANT.new(nil, WIN32OLE::VARIANT::VT_DISPATCH)
       assert_nil(var.value)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]