barometer 0.7.3 → 0.8.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.
Files changed (138) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +7 -0
  3. data/LICENSE +1 -1
  4. data/{README.rdoc → README.md} +124 -110
  5. data/Rakefile +1 -21
  6. data/TODO +8 -9
  7. data/barometer.gemspec +20 -19
  8. data/bin/barometer +36 -83
  9. data/lib/barometer.rb +13 -11
  10. data/lib/barometer/base.rb +10 -10
  11. data/lib/barometer/data.rb +1 -1
  12. data/lib/barometer/data/distance.rb +25 -25
  13. data/lib/barometer/data/geo.rb +9 -9
  14. data/lib/barometer/data/local_datetime.rb +24 -20
  15. data/lib/barometer/data/local_time.rb +13 -13
  16. data/lib/barometer/data/location.rb +6 -6
  17. data/lib/barometer/data/pressure.rb +24 -24
  18. data/lib/barometer/data/speed.rb +28 -28
  19. data/lib/barometer/data/sun.rb +7 -7
  20. data/lib/barometer/data/temperature.rb +29 -29
  21. data/lib/barometer/data/units.rb +9 -9
  22. data/lib/barometer/data/zone.rb +19 -19
  23. data/lib/barometer/formats.rb +1 -1
  24. data/lib/barometer/formats/coordinates.rb +7 -7
  25. data/lib/barometer/formats/format.rb +6 -6
  26. data/lib/barometer/formats/geocode.rb +5 -5
  27. data/lib/barometer/formats/icao.rb +6 -6
  28. data/lib/barometer/formats/postalcode.rb +3 -3
  29. data/lib/barometer/formats/short_zipcode.rb +2 -2
  30. data/lib/barometer/formats/weather_id.rb +10 -10
  31. data/lib/barometer/formats/woe_id.rb +20 -20
  32. data/lib/barometer/formats/zipcode.rb +3 -3
  33. data/lib/barometer/key_file_parser.rb +20 -0
  34. data/lib/barometer/measurements/measurement.rb +32 -32
  35. data/lib/barometer/measurements/result.rb +39 -39
  36. data/lib/barometer/measurements/result_array.rb +12 -12
  37. data/lib/barometer/query.rb +15 -15
  38. data/lib/barometer/services.rb +3 -3
  39. data/lib/barometer/translations/icao_country_codes.yml +20 -20
  40. data/lib/barometer/translations/weather_country_codes.yml +1 -1
  41. data/lib/barometer/translations/zone_codes.yml +2 -2
  42. data/lib/barometer/version.rb +3 -0
  43. data/lib/barometer/weather.rb +27 -27
  44. data/lib/barometer/weather_services/noaa.rb +314 -3
  45. data/lib/barometer/weather_services/service.rb +32 -30
  46. data/lib/barometer/weather_services/weather_bug.rb +35 -33
  47. data/lib/barometer/weather_services/wunderground.rb +31 -29
  48. data/lib/barometer/weather_services/yahoo.rb +36 -35
  49. data/lib/barometer/web_services/geocode.rb +5 -7
  50. data/lib/barometer/web_services/noaa_station_id.rb +53 -0
  51. data/lib/barometer/web_services/placemaker.rb +11 -13
  52. data/lib/barometer/web_services/timezone.rb +5 -7
  53. data/lib/barometer/web_services/weather_id.rb +4 -6
  54. data/lib/barometer/web_services/web_service.rb +4 -4
  55. data/spec/barometer_spec.rb +25 -27
  56. data/spec/cassettes/Barometer.json +1 -0
  57. data/spec/cassettes/Query.json +1 -0
  58. data/spec/cassettes/Query_Format_Coordinates.json +1 -0
  59. data/spec/cassettes/Query_Format_Geocode.json +1 -0
  60. data/spec/cassettes/Query_Format_WeatherID.json +1 -0
  61. data/spec/cassettes/Query_Format_WoeID.json +1 -0
  62. data/spec/cassettes/WeatherService.json +1 -0
  63. data/spec/cassettes/WeatherService_Noaa.json +1 -0
  64. data/spec/cassettes/WeatherService_WeatherBug.json +1 -0
  65. data/spec/cassettes/WeatherService_Wunderground.json +1 -0
  66. data/spec/cassettes/WeatherService_Yahoo.json +1 -0
  67. data/spec/cassettes/WebService_Geocode.json +1 -0
  68. data/spec/cassettes/WebService_NoaaStation.json +1 -0
  69. data/spec/data/distance_spec.rb +60 -60
  70. data/spec/data/geo_spec.rb +23 -23
  71. data/spec/data/local_datetime_spec.rb +44 -44
  72. data/spec/data/local_time_spec.rb +47 -47
  73. data/spec/data/location_spec.rb +16 -16
  74. data/spec/data/pressure_spec.rb +61 -61
  75. data/spec/data/speed_spec.rb +69 -69
  76. data/spec/data/sun_spec.rb +25 -25
  77. data/spec/data/temperature_spec.rb +68 -68
  78. data/spec/data/units_spec.rb +21 -21
  79. data/spec/data/zone_spec.rb +35 -35
  80. data/spec/formats/coordinates_spec.rb +27 -27
  81. data/spec/formats/format_spec.rb +17 -25
  82. data/spec/formats/geocode_spec.rb +23 -31
  83. data/spec/formats/icao_spec.rb +26 -32
  84. data/spec/formats/postalcode_spec.rb +22 -28
  85. data/spec/formats/short_zipcode_spec.rb +20 -26
  86. data/spec/formats/weather_id_spec.rb +57 -67
  87. data/spec/formats/woe_id_spec.rb +59 -59
  88. data/spec/formats/zipcode_spec.rb +39 -47
  89. data/spec/key_file_parser_spec.rb +28 -0
  90. data/spec/measurements/measurement_spec.rb +79 -133
  91. data/spec/measurements/result_array_spec.rb +23 -38
  92. data/spec/measurements/result_spec.rb +100 -128
  93. data/spec/query_spec.rb +83 -100
  94. data/spec/spec_helper.rb +24 -6
  95. data/spec/weather_services/noaa_spec.rb +179 -0
  96. data/spec/weather_services/services_spec.rb +28 -36
  97. data/spec/weather_services/weather_bug_spec.rb +57 -77
  98. data/spec/weather_services/wunderground_spec.rb +36 -65
  99. data/spec/weather_services/yahoo_spec.rb +38 -60
  100. data/spec/weather_spec.rb +79 -79
  101. data/spec/web_services/geocode_spec.rb +7 -11
  102. data/spec/web_services/noaa_station_id_spec.rb +33 -0
  103. data/spec/web_services/placemaker_spec.rb +7 -12
  104. data/spec/web_services/web_services_spec.rb +3 -9
  105. metadata +214 -163
  106. data/VERSION.yml +0 -5
  107. data/lib/barometer/weather_services/google.rb +0 -142
  108. data/lib/barometer/weather_services/weather_dot_com.rb +0 -279
  109. data/spec/fakeweb_helper.rb +0 -179
  110. data/spec/fixtures/formats/weather_id/90210.xml +0 -7
  111. data/spec/fixtures/formats/weather_id/from_USGA0028.xml +0 -3
  112. data/spec/fixtures/formats/weather_id/ksfo.xml +0 -1
  113. data/spec/fixtures/formats/weather_id/manhattan.xml +0 -7
  114. data/spec/fixtures/formats/weather_id/new_york.xml +0 -1
  115. data/spec/fixtures/formats/weather_id/the_hills.xml +0 -1
  116. data/spec/fixtures/geocode/40_73_v3.json +0 -497
  117. data/spec/fixtures/geocode/90210_v3.json +0 -63
  118. data/spec/fixtures/geocode/T5B4M9_v3.json +0 -68
  119. data/spec/fixtures/geocode/atlanta_v3.json +0 -58
  120. data/spec/fixtures/geocode/calgary_ab_v3.json +0 -58
  121. data/spec/fixtures/geocode/ksfo_v3.json +0 -73
  122. data/spec/fixtures/geocode/newyork_ny_v3.json +0 -58
  123. data/spec/fixtures/services/google/calgary_ab.xml +0 -1
  124. data/spec/fixtures/services/placemaker/T5B4M9.xml +0 -65
  125. data/spec/fixtures/services/placemaker/atlanta.xml +0 -65
  126. data/spec/fixtures/services/placemaker/coords.xml +0 -65
  127. data/spec/fixtures/services/placemaker/ksfo.xml +0 -65
  128. data/spec/fixtures/services/placemaker/new_york.xml +0 -65
  129. data/spec/fixtures/services/placemaker/the_hills.xml +0 -65
  130. data/spec/fixtures/services/placemaker/w615702.xml +0 -47
  131. data/spec/fixtures/services/weather_bug/90210_current.xml +0 -93
  132. data/spec/fixtures/services/weather_bug/90210_forecast.xml +0 -76
  133. data/spec/fixtures/services/weather_dot_com/90210.xml +0 -1
  134. data/spec/fixtures/services/wunderground/current_calgary_ab.xml +0 -9
  135. data/spec/fixtures/services/wunderground/forecast_calgary_ab.xml +0 -13
  136. data/spec/fixtures/services/yahoo/90210.xml +0 -3
  137. data/spec/weather_services/google_spec.rb +0 -181
  138. data/spec/weather_services/weather_dot_com_spec.rb +0 -224
@@ -1,104 +1,104 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "Speed" do
4
-
4
+
5
5
  describe "when initialized" do
6
-
6
+
7
7
  it "defines METRIC_UNITS" do
8
8
  Data::Speed.const_defined?("METRIC_UNITS").should be_true
9
9
  Data::Speed::METRIC_UNITS.should == "kph"
10
10
  end
11
-
11
+
12
12
  it "defines IMPERIAL_UNITS" do
13
13
  Data::Speed.const_defined?("IMPERIAL_UNITS").should be_true
14
14
  Data::Speed::IMPERIAL_UNITS.should == "mph"
15
15
  end
16
-
16
+
17
17
  before(:each) do
18
18
  @speed = Data::Speed.new
19
19
  end
20
-
20
+
21
21
  it "responds to kilometers" do
22
22
  @speed.kilometers.should be_nil
23
23
  end
24
-
24
+
25
25
  it "responds to miles" do
26
26
  @speed.miles.should be_nil
27
27
  end
28
-
28
+
29
29
  it "responds to degrees" do
30
30
  @speed.degrees.should be_nil
31
31
  end
32
-
32
+
33
33
  it "responds to direction" do
34
34
  @speed.direction.should be_nil
35
35
  end
36
-
36
+
37
37
  it "responds to metric_default" do
38
38
  lambda { @speed.metric_default = 5 }.should_not raise_error(NotImplementedError)
39
39
  end
40
-
40
+
41
41
  it "responds to imperial_default" do
42
42
  lambda { @speed.imperial_default = 5 }.should_not raise_error(NotImplementedError)
43
43
  end
44
-
44
+
45
45
  it "responds to nil?" do
46
46
  @speed.nil?.should be_true
47
47
  @speed.kph = 5
48
48
  @speed.nil?.should be_false
49
49
  end
50
-
50
+
51
51
  end
52
-
52
+
53
53
  describe "conversion" do
54
-
54
+
55
55
  # For all conversions
56
56
  # 16.09 km/h = 10.0 mph
57
57
  before(:each) do
58
58
  @m = 10.0
59
59
  @km = 16.09
60
60
  end
61
-
61
+
62
62
  it "requires a value, that is either Integer or Float" do
63
63
  Data::Speed.km_to_m(nil).should be_nil
64
64
  Data::Speed.m_to_km(nil).should be_nil
65
-
65
+
66
66
  not_float_or_integer = "string"
67
67
  Data::Speed.km_to_m(not_float_or_integer).should be_nil
68
68
  Data::Speed.m_to_km(not_float_or_integer).should be_nil
69
69
  end
70
-
70
+
71
71
  it "converts km/h to mph" do
72
72
  # to get equality, we need to tone down the precision
73
73
  ((Data::Speed.km_to_m(@km)*10).round/10.0).should == @m
74
74
  end
75
-
75
+
76
76
  it "converts mph to km/h" do
77
77
  Data::Speed.m_to_km(@m).should == @km
78
78
  end
79
-
79
+
80
80
  end
81
-
81
+
82
82
  describe "updating" do
83
-
83
+
84
84
  before(:each) do
85
85
  @speed = Data::Speed.new
86
86
  @m = 10.0
87
87
  @km = 16.09
88
88
  end
89
-
89
+
90
90
  it "nils M if new KM converts to a M that changes more then 1 unit" do
91
91
  @speed.miles = (@m + 1.1)
92
92
  @speed.update_miles(@km)
93
93
  @speed.miles.should be_nil
94
94
  end
95
-
95
+
96
96
  it "doesn't update M if new KM converts to a M that does not change more then 1 unit" do
97
97
  @speed.miles = (@m + 0.9)
98
98
  @speed.update_miles(@km)
99
99
  @speed.miles.should == (@m + 0.9)
100
100
  end
101
-
101
+
102
102
  it "doesn't set M if not already set" do
103
103
  @speed.miles.should be_nil
104
104
  @speed.kilometers.should be_nil
@@ -106,19 +106,19 @@ describe "Speed" do
106
106
  @speed.miles.should be_nil
107
107
  @speed.kilometers.should be_nil
108
108
  end
109
-
109
+
110
110
  it "nils KM if new M converts to a KM that changes more then 1 unit" do
111
111
  @speed.kilometers = (@km + 1.1)
112
112
  @speed.update_kilometers(@m)
113
113
  @speed.kilometers.should be_nil
114
114
  end
115
-
115
+
116
116
  it "doesn't update KM if new M converts to a KM that does not change more then 1 unit" do
117
117
  @speed.kilometers = (@km + 0.9)
118
118
  @speed.update_kilometers(@m)
119
119
  @speed.kilometers.should == (@km + 0.9)
120
120
  end
121
-
121
+
122
122
  it "doesn't set KM if not already set" do
123
123
  @speed.miles.should be_nil
124
124
  @speed.kilometers.should be_nil
@@ -126,17 +126,17 @@ describe "Speed" do
126
126
  @speed.miles.should be_nil
127
127
  @speed.kilometers.should be_nil
128
128
  end
129
-
129
+
130
130
  end
131
-
131
+
132
132
  describe "storing" do
133
-
133
+
134
134
  before(:each) do
135
135
  @speed = Data::Speed.new
136
136
  @m = 10.0
137
137
  @km = 16.09
138
138
  end
139
-
139
+
140
140
  it "doesn't update KM if nil value (or equivalent)" do
141
141
  @speed.kilometers.should be_nil
142
142
  @speed.kph = nil
@@ -144,7 +144,7 @@ describe "Speed" do
144
144
  @speed.kph = "na"
145
145
  @speed.kilometers.should be_nil
146
146
  end
147
-
147
+
148
148
  it "stores KM and resets M" do
149
149
  @speed.kilometers.should be_nil
150
150
  @speed.miles = (@m + 1.1)
@@ -152,7 +152,7 @@ describe "Speed" do
152
152
  @speed.kilometers.should == @km
153
153
  @speed.miles.should be_nil
154
154
  end
155
-
155
+
156
156
  it "doesn't update M if nil value (or equivalent)" do
157
157
  @speed.miles.should be_nil
158
158
  @speed.mph = nil
@@ -160,7 +160,7 @@ describe "Speed" do
160
160
  @speed.mph = "na"
161
161
  @speed.miles.should be_nil
162
162
  end
163
-
163
+
164
164
  it "stores M, resets KM" do
165
165
  @speed.miles.should be_nil
166
166
  @speed.kilometers = (@km + 1.1)
@@ -168,7 +168,7 @@ describe "Speed" do
168
168
  @speed.miles.should == @m
169
169
  @speed.kilometers.should be_nil
170
170
  end
171
-
171
+
172
172
  it "doesn't update direction if nil value (or equivalent)" do
173
173
  @speed.direction.should be_nil
174
174
  @speed.direction = nil
@@ -176,13 +176,13 @@ describe "Speed" do
176
176
  @speed.direction = "na"
177
177
  @speed.direction.should_not be_nil
178
178
  end
179
-
179
+
180
180
  it "stores direction" do
181
181
  @speed.direction.should be_nil
182
182
  @speed.direction = "SSW"
183
183
  @speed.direction.should == "SSW"
184
184
  end
185
-
185
+
186
186
  it "doesn't update degrees if nil value (or equivalent)" do
187
187
  @speed.degrees.should be_nil
188
188
  @speed.degrees = nil
@@ -190,36 +190,36 @@ describe "Speed" do
190
190
  @speed.degrees = "na"
191
191
  @speed.degrees.should be_nil
192
192
  end
193
-
193
+
194
194
  it "stores degrees" do
195
195
  @speed.degrees.should be_nil
196
196
  @speed.degrees = 90.0
197
197
  @speed.degrees.should == 90.0
198
198
  end
199
-
199
+
200
200
  end
201
-
201
+
202
202
  describe "retrieving" do
203
-
203
+
204
204
  before(:each) do
205
205
  @speed = Data::Speed.new
206
206
  @m = 10.0
207
207
  @km = 16.09
208
208
  end
209
-
209
+
210
210
  it "returns KM if it exists" do
211
211
  @speed.kph = @km
212
212
  @speed.kilometers.should == @km
213
213
  @speed.kph(false).should == @km
214
214
  end
215
-
215
+
216
216
  it "auto converts from M if KM is nil and M exists" do
217
217
  @speed.mph = @m
218
218
  @speed.miles.should == @m
219
219
  @speed.kilometers.should be_nil
220
220
  @speed.kph(false).should == @km
221
- end
222
-
221
+ end
222
+
223
223
  it "allows a float to be returned for KM" do
224
224
  km = 16.12
225
225
  @speed.kph = km
@@ -227,28 +227,28 @@ describe "Speed" do
227
227
  @speed.kph(true).should == km.to_i
228
228
  @speed.kph(false).should == km.to_f
229
229
  end
230
-
230
+
231
231
  it "allows only 2 decimal precision for KM" do
232
232
  km = 16.1234
233
233
  @speed.kph = km
234
234
  @speed.kilometers.should == km
235
235
  @speed.kph(false).should == 16.12
236
236
  end
237
-
237
+
238
238
  it "returns M if it exists" do
239
239
  @speed.mph = @m
240
240
  @speed.miles.should == @m
241
241
  @speed.mph.should == @m
242
242
  end
243
-
243
+
244
244
  it "auto converts from KM if M is nil and KM exists" do
245
245
  @speed.kph = @km
246
246
  @speed.kilometers.should == @km
247
247
  @speed.miles.should be_nil
248
248
  # to get equality, we need to tone down the precision
249
249
  ((@speed.mph*10).round/10.0).should == @m
250
- end
251
-
250
+ end
251
+
252
252
  it "allows a float to be returned for M" do
253
253
  m = 10.12
254
254
  @speed.mph = m
@@ -256,18 +256,18 @@ describe "Speed" do
256
256
  @speed.mph(true).should == m.to_i
257
257
  @speed.mph(false).should == m.to_f
258
258
  end
259
-
259
+
260
260
  it "allows only 2 decimal precision for M" do
261
261
  m = 10.1234
262
262
  @speed.mph = m
263
263
  @speed.miles.should == m
264
264
  @speed.mph(false).should == 10.12
265
265
  end
266
-
266
+
267
267
  end
268
-
268
+
269
269
  describe "operators" do
270
-
270
+
271
271
  before(:each) do
272
272
  @m = 10.0
273
273
  @km = 16.09
@@ -280,63 +280,63 @@ describe "Speed" do
280
280
  @speed_same = Data::Speed.new
281
281
  @speed_same.kph = @km
282
282
  end
283
-
283
+
284
284
  it "defines <=>" do
285
285
  Data::Speed.method_defined?("<=>").should be_true
286
286
  (@speed_low <=> @speed_high).should == -1
287
287
  (@speed_high <=> @speed_low).should == 1
288
288
  (@speed <=> @speed_same).should == 0
289
289
  end
290
-
290
+
291
291
  it "defines <" do
292
292
  Data::Speed.method_defined?("<").should be_true
293
293
  @speed_low.should < @speed_high
294
294
  @speed_high.should_not < @speed_low
295
295
  @speed.should_not < @speed_same
296
296
  end
297
-
297
+
298
298
  it "defines >" do
299
299
  Data::Speed.method_defined?(">").should be_true
300
300
  @speed_low.should_not > @speed_high
301
301
  @speed_high.should > @speed_low
302
302
  @speed.should_not > @speed_same
303
303
  end
304
-
304
+
305
305
  it "defines ==" do
306
306
  Data::Speed.method_defined?("==").should be_true
307
307
  @speed_low.should_not == @speed_high
308
308
  @speed.should == @speed_same
309
309
  end
310
-
310
+
311
311
  it "defines <=" do
312
312
  Data::Speed.method_defined?("<=").should be_true
313
313
  @speed_low.should <= @speed_high
314
314
  @speed_high.should_not <= @speed_low
315
315
  @speed.should <= @speed_same
316
316
  end
317
-
317
+
318
318
  it "defines >=" do
319
319
  Data::Speed.method_defined?(">=").should be_true
320
320
  @speed_low.should_not >= @speed_high
321
321
  @speed_high.should >= @speed_low
322
322
  @speed.should >= @speed_same
323
323
  end
324
-
324
+
325
325
  end
326
-
326
+
327
327
  describe "changing units" do
328
-
328
+
329
329
  before(:each) do
330
330
  @m = 10.51
331
331
  @km = ((Data::Speed.m_to_km(@m)*100).round/100.0)
332
332
  @speed = Data::Speed.new
333
333
  @speed.mph = @m
334
334
  end
335
-
335
+
336
336
  it "returns just the integer value (no units)" do
337
337
  @speed.metric?.should be_true
338
338
  @speed.to_i.should == @km.to_i
339
-
339
+
340
340
  @speed.imperial!
341
341
  @speed.metric?.should be_false
342
342
  @speed.to_i.should == @m.to_i
@@ -350,7 +350,7 @@ describe "Speed" do
350
350
  @speed.metric?.should be_false
351
351
  @speed.to_f.should == @m.to_f
352
352
  end
353
-
353
+
354
354
  it "returns just the integer value with units" do
355
355
  @speed.metric?.should be_true
356
356
  @speed.to_s.should == "#{@km.to_i} #{Data::Speed::METRIC_UNITS}"
@@ -359,7 +359,7 @@ describe "Speed" do
359
359
  @speed.metric?.should be_false
360
360
  @speed.to_s.should == "#{@m.to_i} #{Data::Speed::IMPERIAL_UNITS}"
361
361
  end
362
-
362
+
363
363
  it "returns just the units" do
364
364
  @speed.metric?.should be_true
365
365
  @speed.units.should == Data::Speed::METRIC_UNITS
@@ -370,5 +370,5 @@ describe "Speed" do
370
370
  end
371
371
 
372
372
  end
373
-
374
- end
373
+
374
+ end
@@ -1,102 +1,102 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "Data::Sun" do
4
-
4
+
5
5
  describe "when initialized" do
6
-
6
+
7
7
  before(:each) do
8
8
  @sun = Data::Sun.new
9
9
  @local_time_rise = Data::LocalTime.new.parse(Time.now)
10
10
  @local_time_set = Data::LocalTime.new.parse(Time.now + (60*60*8))
11
11
  end
12
-
12
+
13
13
  it "responds to rise" do
14
14
  @sun.respond_to?("rise").should be_true
15
15
  end
16
-
16
+
17
17
  it "responds to set" do
18
18
  @sun.respond_to?("set").should be_true
19
19
  end
20
-
20
+
21
21
  it "sets sunrise" do
22
22
  sun = Data::Sun.new(@local_time_rise,@local_time_set)
23
23
  sun.rise.should == @local_time_rise
24
24
  end
25
-
25
+
26
26
  it "sets sunset" do
27
27
  sun = Data::Sun.new(@local_time_rise,@local_time_set)
28
28
  sun.set.should == @local_time_set
29
29
  end
30
-
30
+
31
31
  it "requires Data::LocalTime for sunrise" do
32
32
  lambda { Data::Sun.new("",@local_time_set) }.should raise_error(ArgumentError)
33
33
  lambda { Data::Sun.new(@local_time_rise,@local_time_set) }.should_not raise_error(ArgumentError)
34
34
  end
35
-
35
+
36
36
  it "requires Data::LocalTime for sunset" do
37
37
  lambda { Data::Sun.new(@local_time_rise,"") }.should raise_error(ArgumentError)
38
38
  lambda { Data::Sun.new(@local_time_rise,@local_time_set) }.should_not raise_error(ArgumentError)
39
39
  end
40
-
40
+
41
41
  it "responds to nil?" do
42
42
  @sun.nil?.should be_true
43
43
  sun = Data::Sun.new(@local_time_rise, @local_time_set)
44
44
  sun.nil?.should be_false
45
45
  end
46
-
46
+
47
47
  end
48
-
48
+
49
49
  describe "comparisons" do
50
-
50
+
51
51
  before(:each) do
52
52
  now = Time.local(2009,5,5,11,40,00)
53
53
  @mid_time = Data::LocalTime.new.parse(now)
54
54
  @early_time = Data::LocalTime.new.parse(now - (60*60*8))
55
55
  @late_time = Data::LocalTime.new.parse(now + (60*60*8))
56
56
  end
57
-
57
+
58
58
  describe "after_rise?" do
59
-
59
+
60
60
  it "requires a LocalTime object" do
61
61
  sun = Data::Sun.new(@early_time,@late_time)
62
62
  lambda { sun.after_rise? }.should raise_error(ArgumentError)
63
63
  lambda { sun.after_rise?("invalid") }.should raise_error(ArgumentError)
64
64
  lambda { sun.after_rise?(@mid_time) }.should_not raise_error(ArgumentError)
65
65
  end
66
-
66
+
67
67
  it "returns true when after sun rise" do
68
68
  sun = Data::Sun.new(@early_time,@late_time)
69
69
  sun.after_rise?(@mid_time).should be_true
70
70
  end
71
-
71
+
72
72
  it "returns false when before sun rise" do
73
73
  sun = Data::Sun.new(@mid_time,@late_time)
74
74
  sun.after_rise?(@early_time).should be_false
75
75
  end
76
-
76
+
77
77
  end
78
-
78
+
79
79
  describe "before_set?" do
80
-
80
+
81
81
  it "requires a LocalTime object" do
82
82
  sun = Data::Sun.new(@early_time,@late_time)
83
83
  lambda { sun.before_set? }.should raise_error(ArgumentError)
84
84
  lambda { sun.before_set?("invalid") }.should raise_error(ArgumentError)
85
85
  lambda { sun.before_set?(@mid_time) }.should_not raise_error(ArgumentError)
86
86
  end
87
-
87
+
88
88
  it "returns true when before sun set" do
89
89
  sun = Data::Sun.new(@early_time,@late_time)
90
90
  sun.before_set?(@mid_time).should be_true
91
91
  end
92
-
92
+
93
93
  it "returns false when before sun set" do
94
94
  sun = Data::Sun.new(@early_time,@mid_time)
95
95
  sun.before_set?(@late_time).should be_false
96
96
  end
97
-
97
+
98
98
  end
99
-
99
+
100
100
  end
101
-
102
- end
101
+
102
+ end