Пример #1
0
    def tm_windows_examples(self):
        """
        Generate a set of fixed time windows with the following
        relationships between them. The actual time scale and point in time
        may vary.

        Tbase  =      |_______________|
        Tsneigh=   |__|
        Teneigh=                      |__|
        Toverl =             |_____________|
        Tsupset=    |_____________________|
        Tsubset=          |_____|
        """
        examples = {}
        now = self.now
        examples['Tbase'] = TimeWindow.from_timedelta(now,
                                                      timedelta(minutes=10))
        examples['Tsneigh'] = TimeWindow.from_timedelta(
            examples['Tbase'].since, -timedelta(minutes=1))
        examples['Teneigh'] = TimeWindow.from_timedelta(
            examples['Tbase'].until, timedelta(minutes=1))
        examples['Toverl'] = TimeWindow.from_timedelta(
            examples['Tbase'].since + examples['Tbase'].delta / 2,
            examples['Tbase'].delta)
        examples['Tsupset'] = TimeWindow(
            examples['Tbase'].since - timedelta(minutes=1),
            examples['Tbase'].until + timedelta(minutes=1))
        examples['Tsubset'] = TimeWindow(
            examples['Tbase'].since + timedelta(minutes=1),
            examples['Tbase'].until - timedelta(minutes=1))
        return examples
Пример #2
0
    def test__repr__(self):
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 5, 0),
                                      timedelta(minutes=10)),
        ])

        # check that it does not raise an exception
        print(repr(tws))

        # check that it does not raise any exception with unicode
        str(repr(tws))
Пример #3
0
    def test_fromtimedelta(self):
        now = datetime.now()
        delta = timedelta(minutes=5)

        tw = TimeWindow.from_timedelta(now, delta)
        self.assertEqual(tw.since, now)
        self.assertEqual(tw.until, now + delta)
        self.assertEqual(tw.delta, delta)

        # Negative case
        tw = TimeWindow.from_timedelta(now, -delta)
        self.assertEqual(tw.since, now - delta)
        self.assertEqual(tw.until, now)
        self.assertEqual(tw.delta, delta)
Пример #4
0
    def test_compress_spatial_time_area(self):
        # Test empty list
        res = TimeWindowsCollection([]).compressed()
        self.assertEqual(res.time_windows, [])

        # Test single window
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=10))
        ])
        res = tws.compressed()
        self.assertEqual(res.time_windows, tws.time_windows)

        # Test two overlapping
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 5, 0),
                                      timedelta(minutes=10)),
        ])
        res = tws.compressed()
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=15)),
        ])

        # Test overlapping and contiguous
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 5, 0),
                                      timedelta(minutes=8)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 5, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 15, 0),
                                      timedelta(minutes=3)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=3)),
        ])
        res = tws.compressed()
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=18)),
        ])
Пример #5
0
    def test_hash(self):

        hash1 = hash(
            TimeWindow.from_timedelta(datetime(2015, 1, 1),
                                      timedelta(seconds=1)))

        for i in range(0, 2048):
            self.assertEqual(
                hash(
                    TimeWindow.from_timedelta(datetime(2015, 1, 1),
                                              timedelta(seconds=1))), hash1)

        self.assertNotEqual(
            hash(
                TimeWindow.from_timedelta(datetime(2015, 1, 1),
                                          timedelta(seconds=1))),
            hash(
                TimeWindow.from_timedelta(datetime(2015, 1, 1, 1),
                                          timedelta(seconds=1))))

        self.assertNotEqual(
            hash(
                TimeWindow.from_timedelta(datetime(2015, 1, 1),
                                          timedelta(seconds=1))),
            hash(
                TimeWindow.from_timedelta(datetime(2015, 1, 1),
                                          timedelta(seconds=2))))
Пример #6
0
    def test_complement_spatial_time_area(self):
        period = TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                           timedelta(hours=1))

        # Test on empty list
        res = TimeWindowsCollection([]).complement(period)
        self.assertEqual(res.time_windows, [period])

        # Test on single included time window
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 10, 0),
                                      timedelta(minutes=10))
        ])
        res = tws.complement(period)
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 20, 0),
                                      timedelta(minutes=40)),
        ])

        # Test on single boundary-snapped time window
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 0o2, 19, 1, 0, 0),
                                      timedelta(minutes=10))
        ])

        res = tws.complement(period)
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 10, 0),
                                      timedelta(minutes=50)),
        ])

        # Test on single partially included time window
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 50, 0),
                                      timedelta(minutes=20))
        ])

        res = tws.complement(period)
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 0, 0),
                                      timedelta(minutes=50)),
        ])

        # Test on multiple compressed and ordered time windows
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 0, 50, 0),
                                      timedelta(minutes=20)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 20, 0),
                                      timedelta(minutes=5)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 50, 0),
                                      timedelta(minutes=20))
        ])
        res = tws.complement(period)
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 10, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 25, 0),
                                      timedelta(minutes=25)),
        ])

        # Test on multiple non-compressed and un-ordered time windows
        tws = TimeWindowsCollection([
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 20, 0),
                                      timedelta(minutes=5)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 50, 0),
                                      timedelta(minutes=20)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 0, 52, 0),
                                      timedelta(minutes=18)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 0, 52, 0),
                                      timedelta(minutes=8)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 0, 50, 0),
                                      timedelta(minutes=5)),
        ])

        res = tws.complement(period)
        self.assertEqual(res.time_windows, [
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 10, 0),
                                      timedelta(minutes=10)),
            TimeWindow.from_timedelta(datetime(2015, 2, 19, 1, 25, 0),
                                      timedelta(minutes=25)),
        ])