1
# Copyright (c) 2009 Entertainer Developers - See COPYING - GPLv2
4
__copyright__ = "2008, Jamie Bennett"
5
__author__ = "Jamie Bennett <jamie@linuxuk.org>"
7
from datetime import datetime
4
from datetime import datetime, timedelta, tzinfo
9
6
from entertainerlib.tests import EntertainerTest
10
7
from entertainerlib.weather import Weather
28
24
def testWeatherFindRemote(self):
29
25
"""Tests the weather code using a call to the outside world"""
26
class EnglandTimeZone(tzinfo):
27
'''An implementation of tzinfo specific to England.'''
30
self.stdoffset = timedelta(hours=0)
31
self.reprname = 'England'
32
self.stdname = 'WET' # Western Europe Time
33
self.dstname = 'BST' # British Summer Time
38
def _first_sunday_on_or_after(self, dt):
39
'''Figure out the DST date.'''
40
days_to_go = 6 - dt.weekday()
42
dt += timedelta(days_to_go)
46
'''See `tzinfo.tzname`.'''
52
def utcoffset(self, dt):
53
'''See `tzinfo.utcoffset`.'''
54
return self.stdoffset + self.dst(dt)
57
'''See `tzinfo.dst`.'''
58
DSTSTART = datetime(1, 4, 1, 2)
59
DSTEND = datetime(1, 10, 25, 1)
61
HOUR = timedelta(hours=1)
62
if dt is None or dt.tzinfo is None:
64
assert dt.tzinfo is self
66
start = self._first_sunday_on_or_after(
67
DSTSTART.replace(year=dt.year))
68
end = self._first_sunday_on_or_after(
69
DSTEND.replace(year=dt.year))
71
if start <= dt.replace(tzinfo=None) < end:
75
england = EnglandTimeZone()
30
77
self.weather.set_location('Bath,England')
31
78
self.weather.refresh()
32
79
forecasts = self.weather.get_forecasts()
33
80
today = forecasts[0]
34
day = datetime.now().strftime('%a')
81
day = datetime.now(england).strftime('%a')
35
82
self.assertEqual(str(today["Day"]), day)
37
84
def testWeatherSet(self):