def test_with_tz_ambiguous_times(self): _skip_if_no_pytz() tz = pytz.timezone('US/Eastern') # regular no problem self.assert_(self.rng.tz_validate()) # March 13, 2011, spring forward, skip from 2 AM to 3 AM dr = date_range(datetime(2011, 3, 13, 1, 30), periods=3, freq=datetools.Hour(), tz=tz) self.assert_(not dr.tz_validate()) # after dst transition dr = date_range(datetime(2011, 3, 13, 3, 30), periods=3, freq=datetools.Hour(), tz=tz) self.assert_(dr.tz_validate()) # November 6, 2011, fall back, repeat 2 AM hour dr = date_range(datetime(2011, 11, 6, 1, 30), periods=3, freq=datetools.Hour(), tz=tz) self.assert_(not dr.tz_validate()) # UTC is OK dr = date_range(datetime(2011, 3, 13), periods=48, freq=datetools.Minute(30), tz=pytz.utc) self.assert_(dr.tz_validate())
def test_outer_join(self): # should just behave as union # overlapping left = self.rng[:10] right = self.rng[5:10] the_join = left.join(right, how='outer') self.assert_(isinstance(the_join, DatetimeIndex)) # non-overlapping, gap in middle left = self.rng[:5] right = self.rng[10:] the_join = left.join(right, how='outer') self.assert_(isinstance(the_join, DatetimeIndex)) self.assert_(the_join.freq is None) # non-overlapping, no gap left = self.rng[:5] right = self.rng[5:10] the_join = left.join(right, how='outer') self.assert_(isinstance(the_join, DatetimeIndex)) # overlapping, but different offset rng = date_range(START, END, freq=datetools.bmonthEnd) the_join = self.rng.join(rng, how='outer') self.assert_(isinstance(the_join, DatetimeIndex)) self.assert_(the_join.freq is None)
def test_union(self): # overlapping left = self.rng[:10] right = self.rng[5:10] the_union = left.union(right) self.assert_(isinstance(the_union, DatetimeIndex)) # non-overlapping, gap in middle left = self.rng[:5] right = self.rng[10:] the_union = left.union(right) self.assert_(isinstance(the_union, Index)) # non-overlapping, no gap left = self.rng[:5] right = self.rng[5:10] the_union = left.union(right) self.assert_(isinstance(the_union, DatetimeIndex)) # order does not matter self.assert_(np.array_equal(right.union(left), the_union)) # overlapping, but different offset rng = date_range(START, END, freq=datetools.bmonthEnd) the_union = self.rng.union(rng) self.assert_(isinstance(the_union, DatetimeIndex))
def test_range_bug(self): # GH #770 offset = datetools.DateOffset(months=3) result = date_range("2011-1-1", "2012-1-31", freq=offset) start = datetime(2011, 1, 1) exp_values = [start + i * offset for i in range(5)] self.assert_(np.array_equal(result, DatetimeIndex(exp_values)))
def test_union_not_cacheable(self): rng = date_range('1/1/2000', periods=50, freq=datetools.Minute()) rng1 = rng[10:] rng2 = rng[:25] the_union = rng1.union(rng2) self.assert_(the_union.equals(rng)) rng1 = rng[10:] rng2 = rng[15:35] the_union = rng1.union(rng2) expected = rng[10:] self.assert_(the_union.equals(expected))
def test_shift(self): shifted = self.rng.shift(5) self.assertEquals(shifted[0], self.rng[5]) self.assertEquals(shifted.offset, self.rng.offset) shifted = self.rng.shift(-5) self.assertEquals(shifted[5], self.rng[0]) self.assertEquals(shifted.offset, self.rng.offset) shifted = self.rng.shift(0) self.assertEquals(shifted[0], self.rng[0]) self.assertEquals(shifted.offset, self.rng.offset) rng = date_range(START, END, freq=datetools.bmonthEnd) shifted = rng.shift(1, freq=datetools.bday) self.assertEquals(shifted[0], rng[0] + datetools.bday)
def test_intersection(self): rng = date_range('1/1/2000', periods=50, freq=datetools.Minute()) rng1 = rng[10:] rng2 = rng[:25] the_int = rng1.intersection(rng2) expected = rng[10:25] self.assert_(the_int.equals(expected)) self.assert_(isinstance(the_int, DatetimeIndex)) self.assert_(the_int.offset == rng.offset) the_int = rng1.intersection(rng2.view(DatetimeIndex)) self.assert_(the_int.equals(expected)) # non-overlapping the_int = rng[:10].intersection(rng[10:]) expected = DatetimeIndex([]) self.assert_(the_int.equals(expected))
def test_cached_range_bug(self): rng = date_range('2010-09-01 05:00:00', periods=50, freq=datetools.DateOffset(hours=6)) self.assertEquals(len(rng), 50) self.assertEquals(rng[0], datetime(2010, 9, 1, 5))