summaryrefslogtreecommitdiffhomepage
path: root/test/workbook/worksheet/tc_date_time_converter.rb
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2012-02-23 09:44:33 +0900
committerRandy Morgan <[email protected]>2012-02-23 09:44:33 +0900
commit65ec495117d22df16ef1c3fc94bdcfe0f2d32d30 (patch)
tree8a1828293e96b0e7dc3b2d46cc851e666aa2badb /test/workbook/worksheet/tc_date_time_converter.rb
parente511a47af99813c4b80f5f2dd19507f24a8d6a65 (diff)
downloadcaxlsx-65ec495117d22df16ef1c3fc94bdcfe0f2d32d30.tar.gz
caxlsx-65ec495117d22df16ef1c3fc94bdcfe0f2d32d30.zip
renaming for clarity, a bit of docs and some patches to spec for AWSOME date/time converter as negative date/time does not parse in some environments under 1.8.7
Diffstat (limited to 'test/workbook/worksheet/tc_date_time_converter.rb')
-rw-r--r--test/workbook/worksheet/tc_date_time_converter.rb75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/workbook/worksheet/tc_date_time_converter.rb b/test/workbook/worksheet/tc_date_time_converter.rb
new file mode 100644
index 00000000..a039282a
--- /dev/null
+++ b/test/workbook/worksheet/tc_date_time_converter.rb
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestDateTimeConverter < Test::Unit::TestCase
+ def setup
+ @converter = Axlsx::DateTimeConverter.new
+ @margin_of_error = 0.000_001
+ end
+
+ def test_date_to_serial_1900
+ Axlsx::Workbook.date1904 = false
+ { # examples taken straight from the spec
+ # "1893-08-05" => -2338.0, # ruby 1.8.7 cannot parse negative dates in some environments
+ "1900-01-01" => 2.0,
+ "1910-02-03" => 3687.0,
+ "2006-02-01" => 38749.0,
+ "9999-12-31" => 2958465.0,
+ }.each do |date_string, expected|
+ serial = @converter.date_to_serial Date.parse(date_string)
+ assert_equal serial, expected
+ end
+ end
+
+ def test_date_to_serial_1904
+ Axlsx::Workbook.date1904 = true
+ { # examples taken straight from the spec
+ # "1893-08-05" => -3800.0, # ruby 1.8.7 cannot parse negative dates in some environments
+ "1904-01-01" => 0.0,
+ "1910-02-03" => 2225.0,
+ "2006-02-01" => 37287.0,
+ "9999-12-31" => 2957003.0,
+ }.each do |date_string, expected|
+ serial = @converter.date_to_serial Date.parse(date_string)
+ assert_equal serial, expected
+ end
+ end
+
+ def test_time_to_serial_1900
+ Axlsx::Workbook.date1904 = false
+ { # examples taken straight from the spec
+ # "1893-08-05T00:00:01Z" => -2337.999989, # ruby 1.8.7 cannot parse negative dates in some environments
+ # "1899-12-28T18:00:00Z" => -1.25, # ruby 1.8.7 cannot parse negative dates in some environments
+ "1910-02-03T10:05:54Z" => 3687.4207639,
+ "1900-01-01T12:00:00Z" => 2.5, # wrongly indicated as 1.5 in the spec!
+ "9999-12-31T23:59:59Z" => 2958465.9999884,
+ }.each do |time_string, expected|
+ serial = @converter.time_to_serial Time.parse(time_string)
+ assert_in_delta serial, expected, @margin_of_error
+ end
+ end
+
+ def test_time_to_serial_1904
+ Axlsx::Workbook.date1904 = true
+ { # examples taken straight from the spec
+ # "1893-08-05T00:00:01Z" => -3799.999989, # ruby 1.8.7 cannot parse negative dates in some environments
+ "1910-02-03T10:05:54Z" => 2225.4207639,
+ "1904-01-01T12:00:00Z" => 0.5000000,
+ "9999-12-31T23:59:59Z" => 2957003.9999884,
+ }.each do |time_string, expected|
+ serial = @converter.time_to_serial Time.parse(time_string)
+ assert_in_delta serial, expected, @margin_of_error
+ end
+ end
+
+ def test_timezone
+ utc = Time.utc 2012 # January 1st, 2012 at 0:00 UTC
+ local = Time.new 2012, 1, 1, 1, 0, 0, 3600 # January 1st, 2012 at 1:00 GMT+1
+ assert_equal local, utc
+ assert_equal @converter.time_to_serial(local), @converter.time_to_serial(utc)
+ Axlsx::Workbook.date1904 = true
+ assert_equal @converter.time_to_serial(local), @converter.time_to_serial(utc)
+ end
+
+end