def test_fix_dst(self): d = {'filename': 'irrelevant', 'datafile_fields': '0', 'datafile_format': 'irrelevant'} d.update(self.datafiledict) df = Datafile_simple('http://irrelevant/', {}, d) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 2, 59)), datetime(2012, 10, 28, 1, 59)) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 3, 00)), datetime(2012, 10, 28, 3, 00)) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 4, 00)), datetime(2012, 10, 28, 4, 00)) # Now we pretend that the switch from dst hasn't occurred yet. # This is the only case when loggertodb should assume that # ambiguous times refer to before the switch. athens = pytz.timezone('Europe/Athens') now = athens.localize(datetime(2012, 10, 28, 3, 59), is_dst=True) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 2, 59), now=now), datetime(2012, 10, 28, 1, 59)) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 3, 00), now=now), datetime(2012, 10, 28, 2, 00)) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 4, 00), now=now), datetime(2012, 10, 28, 4, 00)) # Once more; the switch from DST has just occurred; now it # should be assumed that ambiguous times refer to after the # switch. now = athens.localize(datetime(2012, 10, 28, 3, 0), is_dst=False) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 2, 59), now=now), datetime(2012, 10, 28, 1, 59)) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 3, 00), now=now), datetime(2012, 10, 28, 3, 00)) self.assertEqual(df._fix_dst(datetime(2012, 10, 28, 4, 00), now=now), datetime(2012, 10, 28, 4, 00))
def run_test(self): if not self.base_url: return d = {'filename': full_testdata_filename(self.filename), 'datafile_fields': str(self.timeseries_id), 'datafile_format': 'irrelevant'} d.update(self.datafiledict) df = Datafile_simple(self.base_url, self.cookies, d) df.update_database() enhydris_api.read_tsdata(self.base_url, self.cookies, self.ts) self.assertEqual(len(self.ts), len(self.ref_ts)) (items, ritems) = [x.items() for x in (self.ts, self.ref_ts)] for item, ritem in zip(items, ritems): self.assertEqual(item[0], ritem[0]) self.assertAlmostEqual(item[1], ritem[1], 4) self.assertEqual(item[1].flags, ritem[1].flags)