зеркало из https://github.com/github/ruby.git
107 строки
3.0 KiB
Ruby
107 строки
3.0 KiB
Ruby
# -*- coding: utf-8 -*-
|
|
# frozen_string_literal: false
|
|
|
|
require_relative "helper"
|
|
|
|
class TestCSVDataConverters < Test::Unit::TestCase
|
|
extend DifferentOFS
|
|
|
|
def setup
|
|
super
|
|
@win_safe_time_str = Time.now.strftime("%a %b %d %H:%M:%S %Y")
|
|
end
|
|
|
|
def test_builtin_integer_converter
|
|
# does convert
|
|
[-5, 1, 10000000000].each do |n|
|
|
assert_equal(n, CSV::Converters[:integer][n.to_s])
|
|
end
|
|
|
|
# does not convert
|
|
(%w{junk 1.0} + [""]).each do |str|
|
|
assert_equal(str, CSV::Converters[:integer][str])
|
|
end
|
|
end
|
|
|
|
def test_builtin_float_converter
|
|
# does convert
|
|
[-5.1234, 0, 2.3e-11].each do |n|
|
|
assert_equal(n, CSV::Converters[:float][n.to_s])
|
|
end
|
|
|
|
# does not convert
|
|
(%w{junk 1..0 .015F} + [""]).each do |str|
|
|
assert_equal(str, CSV::Converters[:float][str])
|
|
end
|
|
end
|
|
|
|
def test_builtin_date_converter
|
|
# does convert
|
|
assert_instance_of(
|
|
Date,
|
|
CSV::Converters[:date][@win_safe_time_str.sub(/\d+:\d+:\d+ /, "")]
|
|
)
|
|
|
|
# does not convert
|
|
assert_instance_of(String, CSV::Converters[:date]["junk"])
|
|
end
|
|
|
|
def test_builtin_date_time_converter
|
|
# does convert
|
|
assert_instance_of( DateTime,
|
|
CSV::Converters[:date_time][@win_safe_time_str] )
|
|
|
|
# does not convert
|
|
assert_instance_of(String, CSV::Converters[:date_time]["junk"])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_date
|
|
iso8601_string = "2018-01-14"
|
|
datetime = DateTime.new(2018, 1, 14)
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_minute
|
|
iso8601_string = "2018-01-14T22:25"
|
|
datetime = DateTime.new(2018, 1, 14, 22, 25)
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_second
|
|
iso8601_string = "2018-01-14T22:25:19"
|
|
datetime = DateTime.new(2018, 1, 14, 22, 25, 19)
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_under_second
|
|
iso8601_string = "2018-01-14T22:25:19.1"
|
|
datetime = DateTime.new(2018, 1, 14, 22, 25, 19.1)
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_under_second_offset
|
|
iso8601_string = "2018-01-14T22:25:19.1+09:00"
|
|
datetime = DateTime.new(2018, 1, 14, 22, 25, 19.1, "+9")
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_offset
|
|
iso8601_string = "2018-01-14T22:25:19+09:00"
|
|
datetime = DateTime.new(2018, 1, 14, 22, 25, 19, "+9")
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
|
|
def test_builtin_date_time_converter_iso8601_utc
|
|
iso8601_string = "2018-01-14T22:25:19Z"
|
|
datetime = DateTime.new(2018, 1, 14, 22, 25, 19)
|
|
assert_equal(datetime,
|
|
CSV::Converters[:date_time][iso8601_string])
|
|
end
|
|
end
|