sun_time 0.0.1 → 0.0.2

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.
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