319
319
obj = WIN32OLE_VARIANT.array([2,3], WIN32OLE::VARIANT::VT_I4|WIN32OLE::VARIANT::VT_BYREF)
320
320
assert_equal(WIN32OLE::VARIANT::VT_I4|WIN32OLE::VARIANT::VT_BYREF|WIN32OLE::VARIANT::VT_ARRAY, obj.vartype)
321
321
assert_equal([[0, 0, 0],[0, 0, 0]], obj.value)
323
323
obj = WIN32OLE_VARIANT.array([2,3], WIN32OLE::VARIANT::VT_I4|WIN32OLE::VARIANT::VT_ARRAY)
324
324
assert_instance_of(WIN32OLE_VARIANT, obj)
325
325
assert_equal(WIN32OLE::VARIANT::VT_I4|WIN32OLE::VARIANT::VT_ARRAY, obj.vartype)
374
374
def test_conversion_str2date
375
375
obj = WIN32OLE_VARIANT.new("2004-12-24 12:24:45", WIN32OLE::VARIANT::VT_DATE)
376
assert_equal("2004/12/24 12:24:45", obj.value)
376
assert_equal(Time.new(2004,12,24,12,24,45), obj.value)
379
379
def test_conversion_time2date
380
380
dt = Time.mktime(2004, 12, 24, 12, 24, 45)
381
381
obj = WIN32OLE_VARIANT.new(dt, WIN32OLE::VARIANT::VT_DATE)
382
assert_equal("2004/12/24 12:24:45", obj.value)
382
assert_equal(dt, obj.value)
385
# this test failed because of VariantTimeToSystemTime
386
# and SystemTimeToVariantTime API ignores wMilliseconds
387
# member of SYSTEMTIME struct.
389
# def test_conversion_time_nsec2date
390
# dt = Time.new(2004, 12,24, 12, 24, 45)
392
# obj = WIN32OLE_VARIANT.new(dt, WIN32OLE::VARIANT::VT_DATE)
393
# assert_equal(dt, obj.value)
385
396
def test_conversion_str2cy
387
WIN32OLE.locale = 0x0411 # set locale Japanese
388
obj = WIN32OLE_VARIANT.new("\\10,000", WIN32OLE::VARIANT::VT_CY)
389
assert_equal("10000", obj.value)
399
WIN32OLE.locale = 0x0411 # set locale Japanese
400
rescue WIN32OLERuntimeError
401
STDERR.puts("\n#{__FILE__}:#{__LINE__}:#{self.class.name}.test_conversion_str2cy is skipped(Japanese locale is not installed)")
403
if WIN32OLE.locale == 0x0411
404
obj = WIN32OLE_VARIANT.new("\\10,000", WIN32OLE::VARIANT::VT_CY)
405
assert_equal("10000", obj.value)
391
408
WIN32OLE.locale = WIN32OLE::LOCALE_SYSTEM_DEFAULT
549
566
def test_conversion_vt_date
550
567
obj = WIN32OLE_VARIANT.new(-657434, WIN32OLE::VARIANT::VT_DATE)
551
assert_equal("0100/01/01 00:00:00", obj.value)
568
assert_equal(Time.new(100,1,1), obj.value)
553
570
obj = WIN32OLE_VARIANT.new("1500/12/29 23:59:59", WIN32OLE::VARIANT::VT_DATE)
554
assert_equal("1500/12/29 23:59:59", obj.value)
571
assert_equal(Time.new(1500,12,29,23,59,59), obj.value)
556
573
obj = WIN32OLE_VARIANT.new("1500/12/30 00:00:00", WIN32OLE::VARIANT::VT_DATE)
557
assert_equal("1500/12/30 00:00:00", obj.value)
574
assert_equal(Time.new(1500,12,30), obj.value)
559
576
obj = WIN32OLE_VARIANT.new("1500/12/30 00:00:01", WIN32OLE::VARIANT::VT_DATE)
560
assert_equal("1500/12/30 00:00:01", obj.value)
577
assert_equal(Time.new(1500,12,30,0,0,1), obj.value)
562
579
obj = WIN32OLE_VARIANT.new("1899/12/29 23:59:59", WIN32OLE::VARIANT::VT_DATE)
563
assert_equal("1899/12/29 23:59:59", obj.value)
580
assert_equal(Time.new(1899,12,29,23,59,59), obj.value)
565
582
obj = WIN32OLE_VARIANT.new("1899/12/30 00:00:00", WIN32OLE::VARIANT::VT_DATE)
566
assert_equal("1899/12/30 00:00:00", obj.value)
583
assert_equal(Time.new(1899,12,30), obj.value)
568
585
obj = WIN32OLE_VARIANT.new("1899/12/30 00:00:01", WIN32OLE::VARIANT::VT_DATE)
569
assert_equal("1899/12/30 00:00:01", obj.value)
586
assert_equal(Time.new(1899,12,30,0,0,1), obj.value)
571
588
obj = WIN32OLE_VARIANT.new(0, WIN32OLE::VARIANT::VT_DATE)
572
assert_equal("1899/12/30 00:00:00", obj.value)
589
assert_equal(Time.new(1899,12,30), obj.value)
574
591
obj = WIN32OLE_VARIANT.new("2008/12/29 23:59:59", WIN32OLE::VARIANT::VT_DATE)
575
assert_equal("2008/12/29 23:59:59", obj.value)
592
assert_equal(Time.new(2008,12,29,23,59,59), obj.value)
577
594
obj = WIN32OLE_VARIANT.new("2008/12/30 00:00:00", WIN32OLE::VARIANT::VT_DATE)
578
assert_equal("2008/12/30 00:00:00", obj.value)
595
assert_equal(Time.new(2008,12,30,0,0,0), obj.value)
580
597
obj = WIN32OLE_VARIANT.new("2008/12/30 00:00:01", WIN32OLE::VARIANT::VT_DATE)
581
assert_equal("2008/12/30 00:00:01", obj.value)
598
assert_equal(Time.new(2008,12,30,0,0,1), obj.value)
583
600
obj = WIN32OLE_VARIANT.new("9999/12/31 23:59:59", WIN32OLE::VARIANT::VT_DATE)
584
assert_equal("9999/12/31 23:59:59", obj.value)
601
assert_equal(Time.new(9999,12,31,23,59,59), obj.value)
587
604
def test_create_nil_dispatch