timezone 0.6.0 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +99 -1
- data/.travis.yml +6 -3
- data/CHANGES.markdown +10 -0
- data/Gemfile +1 -1
- data/README.markdown +129 -89
- data/Rakefile +7 -4
- data/benchmark.rb +13 -13
- data/lib/timezone/active_support.rb +147 -134
- data/lib/timezone/configure.rb +131 -110
- data/lib/timezone/deprecate.rb +32 -0
- data/lib/timezone/error.rb +16 -5
- data/lib/timezone/loader.rb +19 -16
- data/lib/timezone/lookup/basic.rb +24 -2
- data/lib/timezone/lookup/geonames.rb +9 -5
- data/lib/timezone/lookup/google.rb +24 -15
- data/lib/timezone/lookup/test.rb +8 -8
- data/lib/timezone/lookup.rb +68 -0
- data/lib/timezone/net_http_client.rb +23 -9
- data/lib/timezone/nil_zone.rb +32 -0
- data/lib/timezone/parser.rb +10 -5
- data/lib/timezone/version.rb +2 -1
- data/lib/timezone/zone.rb +230 -99
- data/lib/timezone.rb +75 -1
- data/test/basic_lookup_test.rb +2 -2
- data/test/geonames_lookup_test.rb +13 -6
- data/test/google_lookup_test.rb +34 -24
- data/test/http_test_client.rb +7 -6
- data/test/test_lookup_test.rb +3 -1
- data/test/test_timezone.rb +59 -0
- data/test/timezone/lookup/test_geonames.rb +59 -0
- data/test/timezone/lookup/test_google.rb +94 -0
- data/test/timezone/lookup/test_test.rb +24 -0
- data/test/timezone/test_deprecate.rb +20 -0
- data/test/timezone/test_loader.rb +32 -0
- data/test/timezone/test_lookup.rb +53 -0
- data/test/timezone/test_nil_zone.rb +26 -0
- data/test/timezone/test_zone.rb +49 -0
- data/test/timezone_test.rb +64 -63
- data/timezone.gemspec +16 -15
- metadata +39 -38
- data/.rubocop_todo.yml +0 -235
data/test/google_lookup_test.rb
CHANGED
@@ -6,10 +6,7 @@ require_relative 'http_test_client'
|
|
6
6
|
|
7
7
|
class GoogleLookupTest < ::Minitest::Unit::TestCase
|
8
8
|
def setup
|
9
|
-
|
10
|
-
c.http_client = HTTPTestClient
|
11
|
-
c.google_api_key = 'MTIzYWJj'
|
12
|
-
end
|
9
|
+
config { |c| c.google_api_key = 'MTIzYWJj' }
|
13
10
|
end
|
14
11
|
|
15
12
|
def coordinates
|
@@ -17,50 +14,63 @@ class GoogleLookupTest < ::Minitest::Unit::TestCase
|
|
17
14
|
end
|
18
15
|
|
19
16
|
def lookup
|
20
|
-
::Timezone::
|
17
|
+
::Timezone::Configure.lookup
|
21
18
|
end
|
22
19
|
|
23
|
-
def
|
24
|
-
Timezone::Configure.
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
def config
|
21
|
+
Timezone::Configure.instance_variable_set(:@lookup, nil)
|
22
|
+
Timezone::Configure.instance_variable_set(:@geonames_lookup, nil)
|
23
|
+
Timezone::Configure.instance_variable_set(:@google_lookup, nil)
|
24
|
+
|
25
|
+
Timezone::Configure.begin do |c|
|
26
|
+
c.http_client = HTTPTestClient
|
27
|
+
yield(c)
|
28
|
+
end
|
28
29
|
end
|
29
30
|
|
30
31
|
def test_google_using_lat_lon_coordinates
|
31
|
-
|
32
|
+
lookup.client.body =
|
33
|
+
File.open(mock_path + '/google_lat_lon_coords.txt').read
|
32
34
|
|
33
35
|
assert_equal 'Australia/Adelaide', lookup.lookup(*coordinates)
|
34
36
|
end
|
35
37
|
|
36
38
|
def test_google_request_denied_read_lat_lon_coordinates
|
37
|
-
|
38
|
-
assert_raises Timezone::Error::Google
|
39
|
+
lookup.client.body = nil
|
40
|
+
assert_raises Timezone::Error::Google do
|
39
41
|
lookup.lookup(*coordinates)
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
45
|
def test_url_non_enterprise
|
44
|
-
Timecop.freeze(Time.at(
|
46
|
+
Timecop.freeze(Time.at(1_433_347_661)) do
|
45
47
|
result = lookup.send(:url, '123', '123')
|
46
|
-
|
48
|
+
params = {
|
49
|
+
'location' => '123%2C123',
|
50
|
+
'timestamp' => '1433347661',
|
51
|
+
'key' => 'MTIzYWJj'
|
52
|
+
}.map { |k, v| "#{k}=#{v}" }
|
53
|
+
|
54
|
+
assert_equal "/maps/api/timezone/json?#{params.join('&')}", result
|
47
55
|
end
|
48
56
|
end
|
49
57
|
|
50
58
|
def test_url_enterprise
|
51
|
-
|
52
|
-
c.google_client_id = '123&asdf'
|
53
|
-
end
|
59
|
+
config { |c| c.google_client_id = '123&asdf' }
|
54
60
|
|
55
|
-
Timecop.freeze(Time.at(
|
61
|
+
Timecop.freeze(Time.at(1_433_347_661)) do
|
56
62
|
result = lookup.send(:url, '123', '123')
|
57
|
-
|
58
|
-
|
63
|
+
params = {
|
64
|
+
'location' => '123%2C123',
|
65
|
+
'timestamp' => '1433347661',
|
66
|
+
'client' => '123%26asdf',
|
67
|
+
'signature' => 'B1TNSSvIw9Wvf_ZjjW5uRzGm4F4='
|
68
|
+
}.map { |k, v| "#{k}=#{v}" }
|
59
69
|
|
60
|
-
|
61
|
-
Timezone::Configure.begin do |c|
|
62
|
-
c.google_client_id = nil
|
70
|
+
assert_equal "/maps/api/timezone/json?#{params.join('&')}", result
|
63
71
|
end
|
72
|
+
ensure
|
73
|
+
config { |c| c.google_client_id = nil }
|
64
74
|
end
|
65
75
|
|
66
76
|
private
|
data/test/http_test_client.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
class HTTPTestClient
|
2
|
-
class << self ; attr_accessor :body ; end
|
3
|
-
|
4
2
|
Response = Struct.new(:body) do
|
5
|
-
def code
|
3
|
+
def code; '200'; end
|
6
4
|
end
|
7
5
|
|
8
|
-
|
6
|
+
attr_accessor :body
|
7
|
+
|
8
|
+
# TODO: Modify once on 1.0.0
|
9
|
+
def initialize(_protocol, _url = nil)
|
9
10
|
end
|
10
11
|
|
11
|
-
def get(
|
12
|
-
HTTPTestClient::Response.new(
|
12
|
+
def get(_url)
|
13
|
+
HTTPTestClient::Response.new(body)
|
13
14
|
end
|
14
15
|
end
|
data/test/test_lookup_test.rb
CHANGED
@@ -34,6 +34,8 @@ class TestLookupTest < ::Minitest::Unit::TestCase
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def teardown
|
37
|
-
Timezone::Configure.
|
37
|
+
Timezone::Configure.instance_variable_set(:@lookup, nil)
|
38
|
+
Timezone::Configure.instance_variable_set(:@google_lookup, nil)
|
39
|
+
Timezone::Configure.instance_variable_set(:@geonames_lookup, nil)
|
38
40
|
end
|
39
41
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'timezone'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class TestTimezone < ::Minitest::Test
|
5
|
+
parallelize_me!
|
6
|
+
|
7
|
+
def test_names
|
8
|
+
assert Timezone.names.is_a?(Array)
|
9
|
+
refute Timezone.names.empty?
|
10
|
+
assert Timezone.names.include?('Australia/Sydney')
|
11
|
+
assert Timezone.names.include?('America/Los_Angeles')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_get
|
15
|
+
assert Timezone['Australia/Sydney'].valid?
|
16
|
+
refute Timezone['foo/bar'].valid?
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_fetch
|
20
|
+
assert Timezone.fetch('Australia/Sydney').valid?
|
21
|
+
assert_equal 'foo', Timezone.fetch('foo/bar') { 'foo' }
|
22
|
+
assert_raises Timezone::Error::InvalidZone do
|
23
|
+
Timezone.fetch('foo/bar')
|
24
|
+
end
|
25
|
+
assert_equal 'foo', Timezone.fetch('foo/bar', 'foo')
|
26
|
+
|
27
|
+
Timezone.stub(:warn, nil) do
|
28
|
+
assert_equal 'b', Timezone.fetch('foo/bar', 'a') { 'b' }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_fetch_warning
|
33
|
+
warning = false
|
34
|
+
|
35
|
+
Timezone.stub(:warn, ->(_) { warning = true }) do
|
36
|
+
Timezone.fetch('foo/bar', 'a') { 'b' }
|
37
|
+
end
|
38
|
+
|
39
|
+
assert warning, 'warning was not issued'
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_lookup
|
43
|
+
Timezone::Lookup.config(:test)
|
44
|
+
|
45
|
+
Timezone::Lookup.lookup.stub(-10, 10, 'America/Los_Angeles')
|
46
|
+
Timezone::Lookup.lookup.stub(-20, 20, 'foos')
|
47
|
+
|
48
|
+
assert_equal Timezone['America/Los_Angeles'], Timezone.lookup(-10, 10)
|
49
|
+
assert_equal 'foo', Timezone.lookup(-20, 20) { 'foo' }
|
50
|
+
assert_raises Timezone::Error::InvalidZone do
|
51
|
+
Timezone.lookup(-20, 20)
|
52
|
+
end
|
53
|
+
assert_equal 'foo', Timezone.lookup(-20, 20, 'foo')
|
54
|
+
|
55
|
+
Timezone.stub(:warn, nil) do
|
56
|
+
assert_equal 'b', Timezone.lookup(-20, 20, 'a') { 'b' }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'timezone/lookup/geonames'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require_relative '../../http_test_client'
|
4
|
+
|
5
|
+
class TestGeonames < ::Minitest::Test
|
6
|
+
parallelize_me!
|
7
|
+
|
8
|
+
def coordinates
|
9
|
+
[-34.92771808058, 138.477041423321]
|
10
|
+
end
|
11
|
+
|
12
|
+
def lookup
|
13
|
+
config = OpenStruct.new
|
14
|
+
config.username = 'timezone'
|
15
|
+
config.request_handler = HTTPTestClient
|
16
|
+
|
17
|
+
Timezone::Lookup::Geonames.new(config)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_default_config
|
21
|
+
assert_equal 'http', lookup.config.protocol
|
22
|
+
assert_equal 'api.geonames.org', lookup.config.url
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_missing_username
|
26
|
+
assert_raises(::Timezone::Error::InvalidConfig) do
|
27
|
+
Timezone::Lookup::Geonames.new(OpenStruct.new)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_lookup
|
32
|
+
mine = lookup
|
33
|
+
mine.client.body = File.open(mock_path + '/lat_lon_coords.txt').read
|
34
|
+
|
35
|
+
assert_equal 'Australia/Adelaide', mine.lookup(*coordinates)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_api_limit
|
39
|
+
mine = lookup
|
40
|
+
mine.client.body = File.open(mock_path + '/api_limit_reached.txt').read
|
41
|
+
|
42
|
+
assert_raises Timezone::Error::GeoNames, 'api limit reached' do
|
43
|
+
mine.lookup(*coordinates)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def mock_path
|
50
|
+
File.expand_path(
|
51
|
+
File.join(
|
52
|
+
File.dirname(__FILE__),
|
53
|
+
'..',
|
54
|
+
'..',
|
55
|
+
'mocks'
|
56
|
+
)
|
57
|
+
)
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'timezone/lookup/google'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'timecop'
|
4
|
+
require_relative '../../http_test_client'
|
5
|
+
|
6
|
+
class TestGoogle < ::Minitest::Test
|
7
|
+
parallelize_me!
|
8
|
+
|
9
|
+
def coordinates
|
10
|
+
[-34.92771808058, 138.477041423321]
|
11
|
+
end
|
12
|
+
|
13
|
+
def config
|
14
|
+
config = OpenStruct.new
|
15
|
+
config.request_handler = HTTPTestClient
|
16
|
+
config.api_key = 'MTIzYWJj'
|
17
|
+
config
|
18
|
+
end
|
19
|
+
|
20
|
+
def lookup
|
21
|
+
Timezone::Lookup::Google.new(config)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_default_config
|
25
|
+
assert_equal 'https', lookup.config.protocol
|
26
|
+
assert_equal 'maps.googleapis.com', lookup.config.url
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_missing_api_key
|
30
|
+
assert_raises(::Timezone::Error::InvalidConfig) do
|
31
|
+
Timezone::Lookup::Google.new(OpenStruct.new)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_google_using_lat_long_coordinates
|
36
|
+
mine = lookup
|
37
|
+
mine.client.body = File.open(mock_path + '/google_lat_lon_coords.txt').read
|
38
|
+
|
39
|
+
assert_equal 'Australia/Adelaide', mine.lookup(*coordinates)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_google_request_denied_read_lat_long_coordinates
|
43
|
+
mine = lookup
|
44
|
+
mine.client.body = nil
|
45
|
+
assert_raises Timezone::Error::Google, 'The provided API key is invalid.' do
|
46
|
+
mine.lookup(*coordinates)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_url_non_enterprise
|
51
|
+
Timecop.freeze(Time.at(1_433_347_661)) do
|
52
|
+
result = lookup.send(:url, '123', '123')
|
53
|
+
params = {
|
54
|
+
'location' => '123%2C123',
|
55
|
+
'timestamp' => '1433347661',
|
56
|
+
'key' => 'MTIzYWJj'
|
57
|
+
}.map { |k, v| "#{k}=#{v}" }
|
58
|
+
|
59
|
+
assert_equal "/maps/api/timezone/json?#{params.join('&')}", result
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_url_enterprise
|
64
|
+
econfig = config
|
65
|
+
econfig.client_id = '123&asdf'
|
66
|
+
|
67
|
+
enterprise = Timezone::Lookup::Google.new(econfig)
|
68
|
+
|
69
|
+
Timecop.freeze(Time.at(1_433_347_661)) do
|
70
|
+
result = enterprise.send(:url, '123', '123')
|
71
|
+
params = {
|
72
|
+
'location' => '123%2C123',
|
73
|
+
'timestamp' => '1433347661',
|
74
|
+
'client' => '123%26asdf',
|
75
|
+
'signature' => 'B1TNSSvIw9Wvf_ZjjW5uRzGm4F4='
|
76
|
+
}.map { |k, v| "#{k}=#{v}" }
|
77
|
+
|
78
|
+
assert_equal "/maps/api/timezone/json?#{params.join('&')}", result
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def mock_path
|
85
|
+
File.expand_path(
|
86
|
+
File.join(
|
87
|
+
File.dirname(__FILE__),
|
88
|
+
'..',
|
89
|
+
'..',
|
90
|
+
'mocks'
|
91
|
+
)
|
92
|
+
)
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'timezone/lookup/test'
|
2
|
+
require 'timezone'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
|
5
|
+
class TestTest < ::Minitest::Test
|
6
|
+
parallelize_me!
|
7
|
+
|
8
|
+
def lookup
|
9
|
+
Timezone::Lookup::Test.new(OpenStruct.new)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_simple_stub
|
13
|
+
mine = lookup
|
14
|
+
mine.stub(-10, 10, 'America/Los_Angeles')
|
15
|
+
|
16
|
+
assert_equal 'America/Los_Angeles', mine.lookup(-10, 10)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_missing_stub
|
20
|
+
assert_raises(::Timezone::Error::Test) do
|
21
|
+
lookup.lookup(100, 100)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'timezone/deprecate'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class TestDeprecate < ::Minitest::Test
|
5
|
+
# This test should not be parallelized because it tests the result
|
6
|
+
# of a single class-level attribute.
|
7
|
+
def test_callback
|
8
|
+
values = []
|
9
|
+
|
10
|
+
Timezone::Deprecate.callback = lambda do |klass, method, message|
|
11
|
+
values = [klass, method, message]
|
12
|
+
end
|
13
|
+
|
14
|
+
Timezone::Deprecate.call(self, :test_message, 'foo')
|
15
|
+
|
16
|
+
assert_equal [self, :test_message, 'foo'], values
|
17
|
+
ensure
|
18
|
+
Timezone::Deprecate.callback = nil
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'timezone/loader'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
module Timezone
|
5
|
+
class TestLoader < ::Minitest::Test
|
6
|
+
parallelize_me!
|
7
|
+
|
8
|
+
def test_load
|
9
|
+
assert_equal(
|
10
|
+
[[1_435_708_800, 'GMT', false, 0]],
|
11
|
+
Loader.load('GMT')
|
12
|
+
)
|
13
|
+
|
14
|
+
assert_raises ::Timezone::Error::InvalidZone do
|
15
|
+
Loader.load('foo/bar')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_names
|
20
|
+
assert Loader.names.include?('GMT')
|
21
|
+
assert Loader.names.include?('Europe/Paris')
|
22
|
+
refute Loader.names.include?('foo/bar')
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_valid?
|
26
|
+
assert Loader.valid?('America/Los_Angeles')
|
27
|
+
assert Loader.valid?('Europe/Paris')
|
28
|
+
refute Loader.valid?('foo/bar')
|
29
|
+
refute Loader.valid?(nil)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'timezone/lookup'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class TestLookup < ::Minitest::Test
|
5
|
+
def test_test_config
|
6
|
+
Timezone::Lookup.config(:test)
|
7
|
+
|
8
|
+
assert_equal Timezone::Lookup::Test,
|
9
|
+
Timezone::Lookup.lookup.class
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_geonames_config
|
13
|
+
Timezone::Lookup.config(:geonames) do |c|
|
14
|
+
c.username = 'foo'
|
15
|
+
end
|
16
|
+
|
17
|
+
assert_equal Timezone::Lookup::Geonames,
|
18
|
+
Timezone::Lookup.lookup.class
|
19
|
+
|
20
|
+
assert_equal Timezone::NetHTTPClient,
|
21
|
+
Timezone::Lookup.lookup.config.request_handler
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_google_config
|
25
|
+
Timezone::Lookup.config(:google) do |c|
|
26
|
+
c.api_key = 'foo'
|
27
|
+
end
|
28
|
+
|
29
|
+
assert_equal Timezone::Lookup::Google,
|
30
|
+
Timezone::Lookup.lookup.class
|
31
|
+
|
32
|
+
assert_equal Timezone::NetHTTPClient,
|
33
|
+
Timezone::Lookup.lookup.config.request_handler
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_custom_config
|
37
|
+
custom_lookup = Class.new do
|
38
|
+
def initialize(config); end
|
39
|
+
end
|
40
|
+
|
41
|
+
Timezone::Lookup.config(custom_lookup)
|
42
|
+
|
43
|
+
assert_equal custom_lookup, Timezone::Lookup.lookup.class
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_missing_config
|
47
|
+
Timezone::Lookup.instance_variable_set(:@lookup, nil)
|
48
|
+
|
49
|
+
assert_raises Timezone::Error::InvalidConfig do
|
50
|
+
Timezone::Lookup.lookup
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'timezone/nil_zone'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class TestNilZone < ::Minitest::Test
|
5
|
+
parallelize_me!
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@zone = Timezone::NilZone.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_name
|
12
|
+
assert_equal nil, @zone.name
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_to_s
|
16
|
+
assert_equal 'NilZone', @zone.to_s
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_inspect
|
20
|
+
assert '#<Timezone::NilZone>', @zone.inspect
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_valid?
|
24
|
+
refute @zone.valid?
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'timezone/zone'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class TestZone < ::Minitest::Test
|
5
|
+
parallelize_me!
|
6
|
+
|
7
|
+
def la
|
8
|
+
@la ||= Timezone::Zone.new('America/Los_Angeles')
|
9
|
+
end
|
10
|
+
|
11
|
+
def paris
|
12
|
+
@paris ||= Timezone::Zone.new('Europe/Paris')
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_name
|
16
|
+
assert_equal 'America/Los_Angeles', la.name
|
17
|
+
assert_equal 'Europe/Paris', paris.name
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_valid?
|
21
|
+
assert la.valid?
|
22
|
+
assert paris.valid?
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_to_s
|
26
|
+
assert_equal 'America/Los_Angeles', la.to_s
|
27
|
+
assert_equal 'Europe/Paris', paris.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_inspect
|
31
|
+
assert_equal(
|
32
|
+
'#<Timezone::Zone name: "America/Los_Angeles">',
|
33
|
+
la.inspect
|
34
|
+
)
|
35
|
+
|
36
|
+
assert_equal(
|
37
|
+
'#<Timezone::Zone name: "Europe/Paris">',
|
38
|
+
paris.inspect
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_comparable
|
43
|
+
assert paris > la
|
44
|
+
assert la < paris
|
45
|
+
assert la == Timezone::Zone.new('America/Los_Angeles')
|
46
|
+
|
47
|
+
assert_equal nil, paris <=> 8
|
48
|
+
end
|
49
|
+
end
|