sun_time 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gemtest ADDED
File without changes
data/lib/sun_time.rb CHANGED
@@ -3,7 +3,8 @@ require 'date'
3
3
  require File.expand_path(File.join(File.dirname(__FILE__), "sun_time/degree_trig"))
4
4
 
5
5
  class SunTime
6
- VERSION = '0.0.1'
6
+ VERSION = '0.0.2'
7
+ MEAN_SOLAR_ANOMALY_DELTA = 0.000001
7
8
 
8
9
  class AlwaysDarkError < ::StandardError; end
9
10
  class AlwaysLightError < ::StandardError; end
@@ -97,7 +98,7 @@ private
97
98
  def recalculate_m
98
99
  current_m = m(j_transit)
99
100
  last_m = nil
100
- until current_m == last_m
101
+ until close_enough(current_m, last_m)
101
102
  last_m = current_m
102
103
  current_m = m(j_transit(last_m))
103
104
  end
@@ -123,7 +124,15 @@ private
123
124
 
124
125
 
125
126
  def jd2time (jd)
126
- dt = DateTime.jd(jd, 12)
127
- Time.utc(dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec)
127
+ dt = DateTime.jd(jd)
128
+ twelve_hour_offset_in_seconds = 12*60*60
129
+ Time.utc(dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec) + twelve_hour_offset_in_seconds
128
130
  end
129
- end
131
+
132
+ # There are some edge cases where comparing values was never returning true.
133
+ # This gets around that by ensuring they are "close enough"
134
+ def close_enough(actual, expected)
135
+ return false if expected.nil?
136
+ (actual - expected).abs <= MEAN_SOLAR_ANOMALY_DELTA
137
+ end
138
+ end
@@ -10,13 +10,13 @@ class TestDate < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_sunrise
13
- sunrise = Time.mktime(2009, 7, 23, 4, 50, 32)
13
+ sunrise = Time.utc(2009, 7, 23, 2, 50, 32)
14
14
  assert_equal(sunrise, @date.sunrise(@lat, @lng))
15
15
  end
16
16
 
17
17
  def test_sunset
18
- sunset = Time.mktime(2009, 7, 23, 21, 48, 56)
18
+ sunset = Time.utc(2009, 7, 23, 19, 48, 56)
19
19
 
20
20
  assert_equal(sunset, @date.sunset(@lat, @lng))
21
21
  end
22
- end
22
+ end
@@ -11,13 +11,13 @@ class TestSunTime < Test::Unit::TestCase
11
11
  end
12
12
 
13
13
  def test_sunrise
14
- sunrise = Time.mktime(2009, 7, 23, 4, 50, 32)
14
+ sunrise = Time.utc(2009, 7, 23, 2, 50, 32)
15
15
 
16
16
  assert_equal(sunrise, @sun_time.sunrise)
17
17
  end
18
18
 
19
19
  def test_sunset
20
- sunset = Time.mktime(2009, 7, 23, 21, 48, 56)
20
+ sunset = Time.utc(2009, 7, 23, 19, 48, 56)
21
21
 
22
22
  assert_equal(sunset, @sun_time.sunset)
23
23
  end
@@ -33,6 +33,12 @@ class TestSunTime < Test::Unit::TestCase
33
33
  assert_nil(winter_in_sweden.sunrise)
34
34
  assert_nil(winter_in_sweden.sunset)
35
35
  end
36
+
37
+ def test_infinite_loop
38
+ sunrise = Time.utc(2012, 4, 24, 10, 4, 51)
39
+ infinite_loop_location = SunTime.new(Date.new(2012,4,24), 40.9674702, -74.2278852)
40
+ assert_equal(sunrise, infinite_loop_location.sunrise)
41
+ end
36
42
 
37
43
  # Private methods
38
44
 
@@ -79,4 +85,4 @@ class TestSunTime < Test::Unit::TestCase
79
85
  def test_j_rise
80
86
  assert_in_delta(2455035.6184334, @sun_time.send(:j_rise), 2 ** -20)
81
87
  end
82
- end
88
+ end
metadata CHANGED
@@ -1,38 +1,59 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sun_time
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Carl-Johan Kihlbom
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2009-07-23 00:00:00 +02:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-02 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rdoc
16
+ requirement: &70104349007540 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.10'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70104349007540
25
+ - !ruby/object:Gem::Dependency
26
+ name: newgem
27
+ requirement: &70104349007060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 1.5.3
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70104349007060
36
+ - !ruby/object:Gem::Dependency
16
37
  name: hoe
38
+ requirement: &70104349006560 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '3.0'
17
44
  type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 2.3.2
24
- version:
45
+ prerelease: false
46
+ version_requirements: *70104349006560
25
47
  description: Calculate the time of sunrise and sunset for location on a specific date.
26
- email:
48
+ email:
27
49
  - cj@elabs.se
28
50
  executables: []
29
-
30
51
  extensions: []
31
-
32
- extra_rdoc_files:
52
+ extra_rdoc_files:
33
53
  - History.txt
34
54
  - Manifest.txt
35
- files:
55
+ - README.rdoc
56
+ files:
36
57
  - History.txt
37
58
  - Manifest.txt
38
59
  - README.rdoc
@@ -46,34 +67,34 @@ files:
46
67
  - test/test_date_ext.rb
47
68
  - test/test_degree_trig.rb
48
69
  - test/test_sun_time.rb
49
- has_rdoc: true
70
+ - .gemtest
50
71
  homepage: http://github.com/elabs/sun_time
72
+ licenses: []
51
73
  post_install_message:
52
- rdoc_options:
74
+ rdoc_options:
53
75
  - --main
54
76
  - README.rdoc
55
- require_paths:
77
+ require_paths:
56
78
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: "0"
62
- version:
63
- required_rubygems_version: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- version:
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
69
91
  requirements: []
70
-
71
92
  rubyforge_project: elabs
72
- rubygems_version: 1.3.1
93
+ rubygems_version: 1.8.6
73
94
  signing_key:
74
- specification_version: 2
95
+ specification_version: 3
75
96
  summary: Calculate the time of sunrise and sunset for location on a specific date.
76
- test_files:
97
+ test_files:
77
98
  - test/test_date_ext.rb
78
99
  - test/test_degree_trig.rb
79
100
  - test/test_sun_time.rb