1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
require File.join(File.expand_path(File.dirname(__FILE__)), 'test_utils')
include TZInfo
class TCRubyDataSource < Minitest::Test
def setup
@data_source = RubyDataSource.new
end
def test_load_timezone_info_data
info = @data_source.load_timezone_info('Europe/London')
assert_kind_of(DataTimezoneInfo, info)
assert_equal('Europe/London', info.identifier)
end
def test_load_timezone_info_linked
info = @data_source.load_timezone_info('UTC')
assert_kind_of(LinkedTimezoneInfo, info)
assert_equal('UTC', info.identifier)
assert_equal('Etc/UTC', info.link_to_identifier)
end
def test_load_timezone_info_does_not_exist
assert_raises(InvalidTimezoneIdentifier) do
@data_source.load_timezone_info('Nowhere/Special')
end
end
def test_load_timezone_info_invalid
assert_raises(InvalidTimezoneIdentifier) do
@data_source.load_timezone_info('../Definitions/UTC')
end
end
def test_load_timezone_info_nil
assert_raises(InvalidTimezoneIdentifier) do
@data_source.load_timezone_info(nil)
end
end
def test_load_timezone_info_case
assert_raises(InvalidTimezoneIdentifier) do
@data_source.load_timezone_info('europe/london')
end
end
def test_load_timezone_info_plus
info = @data_source.load_timezone_info('Etc/GMT+1')
assert_equal('Etc/GMT+1', info.identifier)
end
def test_load_timezone_info_minus
info = @data_source.load_timezone_info('Etc/GMT-1')
assert_equal('Etc/GMT-1', info.identifier)
end
def test_load_timezone_info_tainted
safe_test do
identifier = 'Europe/Amsterdam'.dup.taint
assert(identifier.tainted?)
info = @data_source.load_timezone_info(identifier)
assert_equal('Europe/Amsterdam', info.identifier)
assert(identifier.tainted?)
end
end
def test_load_timezone_info_tainted_and_frozen
safe_test do
info = @data_source.load_timezone_info('Europe/Amsterdam'.dup.taint.freeze)
assert_equal('Europe/Amsterdam', info.identifier)
end
end
def test_timezone_identifiers
all = @data_source.timezone_identifiers
assert_equal(TZInfo::Data::Indexes::Timezones.timezones, all)
assert_equal(true, all.frozen?)
end
def test_data_timezone_identifiers
all_data = @data_source.data_timezone_identifiers
assert_equal(TZInfo::Data::Indexes::Timezones.data_timezones, all_data)
assert_equal(true, all_data.frozen?)
end
def test_linked_timezone_identifiers
all_linked = @data_source.linked_timezone_identifiers
assert_equal(TZInfo::Data::Indexes::Timezones.linked_timezones, all_linked)
assert_equal(true, all_linked.frozen?)
end
def test_load_country_info
info = @data_source.load_country_info('GB')
assert_equal('GB', info.code)
end
def test_load_country_info_not_exist
assert_raises(InvalidCountryCode) do
@data_source.load_country_info('ZZ')
end
end
def test_load_country_info_invalid
assert_raises(InvalidCountryCode) do
@data_source.load_country_info('../Countries/GB')
end
end
def test_load_country_info_nil
assert_raises(InvalidCountryCode) do
@data_source.load_country_info(nil)
end
end
def test_load_country_info_case
assert_raises(InvalidCountryCode) do
@data_source.load_country_info('gb')
end
end
def test_load_country_info_tainted
safe_test do
code = 'NL'.dup.taint
assert(code.tainted?)
info = @data_source.load_country_info(code)
assert_equal('NL', info.code)
assert(code.tainted?)
end
end
def test_load_country_info_tainted_and_frozen
safe_test do
info = @data_source.load_country_info('NL'.dup.taint.freeze)
assert_equal('NL', info.code)
end
end
def test_country_codes
codes = @data_source.country_codes
assert_equal(TZInfo::Data::Indexes::Countries.countries.keys, codes)
assert_equal(true, codes.frozen?)
end
end
|