def test_union(self):
        ex = self.tm_windows_examples()
        tests = [
            (ex['Tbase'], 'Tbase', 'Tbase'),
            (TimeWindow(ex['Tsneigh'].since,
                        ex['Tbase'].until), 'Tbase', 'Tsneigh'),
            (TimeWindow(
                ex['Tbase'].since,
                ex['Teneigh'].until,
            ), 'Tbase', 'Teneigh'),
            ([ex['Tsneigh'], ex['Teneigh']], 'Tsneigh', 'Teneigh'),
            (TimeWindow(ex['Tbase'].since,
                        ex['Toverl'].until), 'Tbase', 'Toverl'),
            (ex['Tsupset'], 'Tbase', 'Tsupset'),
            (ex['Tbase'], 'Tbase', 'Tsubset'),
        ]

        for result, twname1, twname2 in tests:
            tw1 = ex[twname1]
            tw2 = ex[twname2]
            self.assertEqual(
                result, tw1.union(tw2),
                'Checking "{0}".union("{1}")'.format(twname1, twname2))
            self.assertEqual(
                result, tw1 | tw2,
                'Checking "{0}".union("{1}")'.format(twname1, twname2))
            self.assertEqual(
                result, tw2.union(tw1),
                'Checking "{0}".union("{1}")'.format(twname2, twname1))
            self.assertEqual(
                result, tw2 | tw1,
                'Checking "{0}".union("{1}")'.format(twname2, twname1))
 def test_smallestpossible(self):
     ex = self.tm_windows_examples()
     tests = [
         (ex['Tbase'], [ex['Tbase']]),
         (ex['Tbase'], [ex['Tbase'], ex['Tbase']]),
         (TimeWindow(ex['Tsneigh'].since,
                     ex['Tbase'].until), [ex['Tbase'], ex['Tsneigh']]),
         (TimeWindow(
             ex['Tbase'].since,
             ex['Teneigh'].until,
         ), [ex['Tbase'], ex['Teneigh']]),
         (TimeWindow(
             ex['Tsneigh'].since,
             ex['Teneigh'].until,
         ), [ex['Tsneigh'], ex['Teneigh']]),
         (TimeWindow(
             ex['Tsneigh'].since,
             ex['Teneigh'].until,
         ), [ex['Tsneigh'], ex['Tbase'], ex['Teneigh']]),
         (TimeWindow(
             ex['Tbase'].since,
             ex['Toverl'].until,
         ), [ex['Toverl'], ex['Tbase']]),
         (ex['Tsupset'], [ex['Tsupset'], ex['Tbase']]),
         (ex['Tbase'], [ex['Tsubset'], ex['Tbase']]),
     ]
     for result, tw_set in tests:
         self.assertEqual(result, TimeWindow.smallest_possible(tw_set))
    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
 def test_time_window_to_timestamps(self):
     start = 1420063200
     end = start + 120
     tw = TimeWindow(utcfromtimestamp_tzaware(start),
                     utcfromtimestamp_tzaware(end))
     tw_timestamps = time_window_to_timestamps(tw)
     self.assertTupleEqual(tw_timestamps, (start, end))
示例#5
0
    def start_simulate(self, iteration):
        #self.log('start simulating')

        self.__iteration_number = iteration

        for _ in range(iteration):
            #self.log("found a new block")

            random_number = random.random()

            # Mining Process
            if random_number < self._alpha:
                self.calculating_weight(True)
                self.start_selfish_mining()
            else:
                self.calculating_weight(False)
                self.start_honest_mining()

            block_creation_response = self.time_window.create_a_block()
            if block_creation_response == BlockCreationStatus.EndTow:
                self.chain_evaluation()
                self.reset_tow()
            elif block_creation_response == BlockCreationStatus.EndTimeWindow:
                self.time_window = TimeWindow(self.tow_number,
                                              self.min_tow_block_number,
                                              self.max_tow_block_number)
                self.chain_evaluation()
                self.reset_tow()
            else:
                self.__current_block_tow += 1

        self.calculating_output()

        return
示例#6
0
    def convert_to_loc_avail(self, db_loc):
        la = LocationAvailability()
        la.location_name = db_loc[HASH_KEY]
        if 'is_muted' in db_loc.keys():
            la.is_muted = db_loc['is_muted']

        if 'windows' in db_loc.keys():
            for w in json.loads(db_loc['windows']):
                tw = TimeWindow(IsMuted=w["is_muted"],
                                ical=w['ical'],
                                Priority=w['priority'])

                la.add_window(tw)
        if 'last_activity' in db_loc.keys():
            la.last_activity = arrow.get(db_loc['last_activity'])
            logging.info('Last motion was ' + la.last_activity.isoformat())
            if ((arrow.utcnow() - la.last_activity).seconds > 60):
                la.is_motion = False
            else:
                la.is_motion = True

        if 'input_capabilities' in db_loc.keys():
            for k in json.loads(db_loc['input_capabilities']):
                i = json.loads(db_loc['input_capabilities'])[k]
                la.add_input_capability(HardwareId=k,
                                        Name=i['name'],
                                        Color=i['color'],
                                        Style=i['style'],
                                        Type=i['type'])

        return la
 def test_time_window_from_timestamps(self):
     start = 1420063200
     end = start + 120
     check_tw = time_window_from_timestamps((start, end))
     tw = TimeWindow(utcfromtimestamp_tzaware(start),
                     utcfromtimestamp_tzaware(end))
     self.assertEqual(check_tw, tw)
示例#8
0
def adjust_segments(consumption_segments: dict,
                    weight_series: pd.Series) -> dict:
    """
    Realign consumption segments to end one timestamp before a new product arrives on a scale and start on timestamp
    of product arrival.
    Args:
        consumption_segments: Dictionary of TimeWindow segments.
        weight_series: Weight measurements as a Pandas Series.

    Returns: A dictionary of adjusted TimeWindow segments.
    """
    segments = consumption_segments.copy()

    for segment_index in range(len(segments) - 1):
        current_segment_data = create_segment_data(segments[segment_index],
                                                   weight_series)
        next_segment_data = create_segment_data(segments[segment_index + 1],
                                                weight_series)

        current_end_weight = current_segment_data["end_weight"]
        next_start_weight = next_segment_data["start_weight"]

        if current_end_weight >= next_start_weight:
            weight_sub_range = weight_series[current_segment_data[
                "min_weight_time"]:next_segment_data["end_time"]]
            sub_range_values = np.array(weight_sub_range.values)
            sub_range_times = weight_sub_range.index
            peaks, plateaus = signal.find_peaks(sub_range_values,
                                                plateau_size=1)
            first_maxima_index = peaks[0]
            if plateaus["left_edges"]:
                plateaus_left_edge = plateaus["left_edges"]
                first_maxima_index = np.minimum(peaks, plateaus_left_edge)[0]

            adjusted_current_end_time = sub_range_times[first_maxima_index - 1]
            adjusted_next_start_time = sub_range_times[first_maxima_index]

            adjusted_current_segment = TimeWindow(
                current_segment_data["start_time"], adjusted_current_end_time)
            adjusted_next_segment = TimeWindow(adjusted_next_start_time,
                                               next_segment_data["end_time"])

            segments[segment_index] = adjusted_current_segment
            segments[segment_index + 1] = adjusted_next_segment
        else:
            continue
    return segments
    def test_split_per_week(self):

        # Single time test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 1, 1, 15, 30, 40, 54),
        )
        self.assertEqual(tw.split_per_week(), [tw])

        # Single day test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 1, 1, 16, 4, 3, 1),
        )
        self.assertEqual(tw.split_per_week(), [tw])

        # Span one week, with period less than 7 days
        tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 3, 10))
        self.assertEqual(
            tw.split_per_week(),
            [TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 3, 10))])

        # Span two weeks, with period greater than 7 days
        tw = TimeWindow(datetime(2015, 1, 1, 23),
                        datetime(2015, 1, 11, 23, 30))
        print(tw.split_per_week())
        self.assertEqual(tw.split_per_week(), [
            TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 5, 0)),
            TimeWindow(datetime(2015, 1, 5, 0), datetime(2015, 1, 11, 23, 30))
        ])
示例#10
0
    def test_constructor(self):
        now = datetime.now()
        until = now + timedelta(minutes=5)

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

        with self.assertRaises(ValueError):
            # Test reverse order
            TimeWindow(until, now)

        with self.assertRaises(TypeError):
            TimeWindow("string", until)

        with self.assertRaises(TypeError):
            TimeWindow(now, "string")
示例#11
0
 def __init__(self):
     '''
     obj -> None
     This method initializes an object
     '''
     self.conti = True
     self.wrong = False
     self.element_1 = StartingWindow()
     if self.element_1.name != 'quit' and len(self.element_1.name) > 0:
         self.element_2 = TimeWindow()
         self.get_chart()
         self.get_rep()
         if self.element_2 != None:
             a = Represent()
示例#12
0
def create_consumption_segments(weight_series: pd.Series, peaks: list) -> dict:
    """
    Create and return a dictionary of time windows representing consumption segments of individual products.
    Args:
        weight_series: Weight measurements as a Pandas Series.
        peaks: Peaks in data as a list of time stamps.

    Returns: Dictionary of time_window.TimeWindows 'windows'.
    """
    weight_schema = pas.weight_series
    try:
        weight_schema(weight_series)
    except pa.errors.SchemaErrors:
        raise

    time_stamps = weight_series.index
    consumption_segments = {}

    start_time_stamp = time_stamps[0]
    end_index = (time_stamps.get_loc(peaks[0]) - 1
                 )  # end the segment 1 timestamp before peak
    end_time_stamp = time_stamps[end_index]
    segment_0 = TimeWindow(start_time_stamp, end_time_stamp)
    consumption_segments[0] = segment_0

    for index, break_point in enumerate(peaks):
        start_time_stamp = break_point
        if index < len(peaks) - 1:
            end_index = (time_stamps.get_loc(peaks[index + 1]) - 1
                         )  # end the segment 1 timestamp before peak
            end_time_stamp = time_stamps[end_index]
        else:
            end_time_stamp = time_stamps[-1]
        consumption_segments[index + 1] = TimeWindow(start_time_stamp,
                                                     end_time_stamp)

    return consumption_segments
示例#13
0
    def test_complement(self):
        ex = self.tm_windows_examples()
        tests = [
            (None, 'Tbase', 'Tbase'),
            (ex['Tbase'], 'Tbase', 'Tsneigh'),
            (ex['Tbase'], 'Tbase', 'Teneigh'),
            (TimeWindow(ex['Tbase'].since,
                        ex['Toverl'].since), 'Tbase', 'Toverl'),
            (None, 'Tbase', 'Tsupset'),
            ([
                TimeWindow(ex['Tbase'].since, ex['Tsubset'].since),
                TimeWindow(ex['Tsubset'].until, ex['Tbase'].until)
            ], 'Tbase', 'Tsubset'),
        ]

        for result, twname1, twname2 in tests:
            tw1 = ex[twname1]
            tw2 = ex[twname2]
            self.assertEqual(
                result, tw1.complement(tw2),
                'Checking "{0}".complement("{1}")'.format(twname1, twname2))
            self.assertEqual(
                result, tw1 - tw2,
                'Checking "{0}".complement("{1}")'.format(twname1, twname2))
示例#14
0
    def __init__(self,
                 tow_number,
                 min_tow_block_number,
                 max_tow_block_number,
                 show_log=False):
        self._alpha = 0
        self._gamma = 0

        self.tow_number = tow_number
        self.min_tow_block_number = min_tow_block_number
        self.max_tow_block_number = max_tow_block_number

        self.time_window = TimeWindow(tow_number, min_tow_block_number,
                                      max_tow_block_number)

        self.__show_log = show_log

        random.seed(None)

        self.__public_chain_length = 0
        self.__private_chain_length = 0
        self.__delta = 0

        self.__selfish_miners_win_block = 0
        self.__honest_miners_win_block = 0

        self.__selfish_miner_revenue = 0
        self.__honest_miner_revenue = 0

        self.__total_mined_block = 0
        self.__total_stale_block = 0

        self.__iteration_number = 0

        self.__predicted_K = 2

        self.__published = False
        self.__private_chain_weight = [0 for _ in range(max_tow_block_number)]
        self.__public_chain_weight = [0 for _ in range(max_tow_block_number)]
        self.__current_block_tow = 1
        self.__average_tow = self.time_window.get_average_tow()

        self.__fork_created = False
示例#15
0
 def helper_time_periods_to_time_window_list(self, periods):
     return [
         TimeWindow(*list(map(utcfromtimestamp_tzaware, period)))
         for period in periods
     ]
示例#16
0
    def test_split_per_day(self):

        # Single time test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 1, 1, 15, 30, 40, 54),
        )
        self.assertEqual(tw.split_per_day(), [tw])

        # Single day test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 1, 1, 16, 4, 3, 1),
        )
        self.assertEqual(tw.split_per_day(), [tw])

        # Span two days, with period less than 24 hours
        tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 10))
        self.assertEqual(tw.split_per_day(), [
            TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 0)),
            TimeWindow(datetime(2015, 1, 2, 0), datetime(2015, 1, 2, 10))
        ])

        # Span two days, with period greater than 24 hours
        tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 23, 30))
        self.assertEqual(tw.split_per_day(), [
            TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 2, 0)),
            TimeWindow(datetime(2015, 1, 2, 0), datetime(2015, 1, 2, 23, 30))
        ])

        # A big test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 2, 3, 5, 4, 3, 1),
        )

        self.assertEqual(tw.split_per_day(), [
            TimeWindow(datetime(2015, 1, 1, 15, 30, 40, 54),
                       datetime(2015, 1, 2, 0, 0)),
            TimeWindow(datetime(2015, 1, 2, 0, 0), datetime(2015, 1, 3, 0, 0)),
            TimeWindow(datetime(2015, 1, 3, 0, 0), datetime(2015, 1, 4, 0, 0)),
            TimeWindow(datetime(2015, 1, 4, 0, 0), datetime(2015, 1, 5, 0, 0)),
            TimeWindow(datetime(2015, 1, 5, 0, 0), datetime(2015, 1, 6, 0, 0)),
            TimeWindow(datetime(2015, 1, 6, 0, 0), datetime(2015, 1, 7, 0, 0)),
            TimeWindow(datetime(2015, 1, 7, 0, 0), datetime(2015, 1, 8, 0, 0)),
            TimeWindow(datetime(2015, 1, 8, 0, 0), datetime(2015, 1, 9, 0, 0)),
            TimeWindow(datetime(2015, 1, 9, 0, 0), datetime(2015, 1, 10, 0,
                                                            0)),
            TimeWindow(datetime(2015, 1, 10, 0, 0), datetime(
                2015, 1, 11, 0, 0)),
            TimeWindow(datetime(2015, 1, 11, 0, 0), datetime(
                2015, 1, 12, 0, 0)),
            TimeWindow(datetime(2015, 1, 12, 0, 0), datetime(
                2015, 1, 13, 0, 0)),
            TimeWindow(datetime(2015, 1, 13, 0, 0), datetime(
                2015, 1, 14, 0, 0)),
            TimeWindow(datetime(2015, 1, 14, 0, 0), datetime(
                2015, 1, 15, 0, 0)),
            TimeWindow(datetime(2015, 1, 15, 0, 0), datetime(
                2015, 1, 16, 0, 0)),
            TimeWindow(datetime(2015, 1, 16, 0, 0), datetime(
                2015, 1, 17, 0, 0)),
            TimeWindow(datetime(2015, 1, 17, 0, 0), datetime(
                2015, 1, 18, 0, 0)),
            TimeWindow(datetime(2015, 1, 18, 0, 0), datetime(
                2015, 1, 19, 0, 0)),
            TimeWindow(datetime(2015, 1, 19, 0, 0), datetime(
                2015, 1, 20, 0, 0)),
            TimeWindow(datetime(2015, 1, 20, 0, 0), datetime(
                2015, 1, 21, 0, 0)),
            TimeWindow(datetime(2015, 1, 21, 0, 0), datetime(
                2015, 1, 22, 0, 0)),
            TimeWindow(datetime(2015, 1, 22, 0, 0), datetime(
                2015, 1, 23, 0, 0)),
            TimeWindow(datetime(2015, 1, 23, 0, 0), datetime(
                2015, 1, 24, 0, 0)),
            TimeWindow(datetime(2015, 1, 24, 0, 0), datetime(
                2015, 1, 25, 0, 0)),
            TimeWindow(datetime(2015, 1, 25, 0, 0), datetime(
                2015, 1, 26, 0, 0)),
            TimeWindow(datetime(2015, 1, 26, 0, 0), datetime(
                2015, 1, 27, 0, 0)),
            TimeWindow(datetime(2015, 1, 27, 0, 0), datetime(
                2015, 1, 28, 0, 0)),
            TimeWindow(datetime(2015, 1, 28, 0, 0), datetime(
                2015, 1, 29, 0, 0)),
            TimeWindow(datetime(2015, 1, 29, 0, 0), datetime(
                2015, 1, 30, 0, 0)),
            TimeWindow(datetime(2015, 1, 30, 0, 0), datetime(
                2015, 1, 31, 0, 0)),
            TimeWindow(datetime(2015, 1, 31, 0, 0), datetime(2015, 2, 1, 0,
                                                             0)),
            TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(2015, 2, 2, 0, 0)),
            TimeWindow(datetime(2015, 2, 2, 0, 0), datetime(2015, 2, 3, 0, 0)),
            TimeWindow(datetime(2015, 2, 3, 0, 0),
                       datetime(2015, 2, 3, 5, 4, 3, 1))
        ])
示例#17
0
    def test_split_per_month(self):
        # Single time test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 1, 1, 15, 30, 40, 54),
        )
        self.assertEqual(tw.split_per_month(), [tw])

        # Single day test
        tw = TimeWindow(
            datetime(2015, 1, 1, 15, 30, 40, 54),
            datetime(2015, 1, 1, 16, 4, 3, 1),
        )
        self.assertEqual(tw.split_per_month(), [tw])

        # Span one month, with period less than 30 days
        tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 15, 10))
        self.assertEqual(
            tw.split_per_month(),
            [TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 1, 15, 10))])

        # Span two months, with period greater than 30 days
        tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 2, 5, 23, 30))
        self.assertEqual(tw.split_per_month(), [
            TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 2, 1, 0, 0)),
            TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(
                2015, 2, 5, 23, 30))
        ])

        # Span three months, with period greater than 30 days
        tw = TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 3, 5, 23, 30))
        self.assertEqual(tw.split_per_month(), [
            TimeWindow(datetime(2015, 1, 1, 23), datetime(2015, 2, 1, 0, 0)),
            TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(2015, 3, 1, 0, 0)),
            TimeWindow(datetime(2015, 3, 1, 0, 0), datetime(
                2015, 3, 5, 23, 30))
        ])

        # Span three months, with period greater than 30 days,
        # starting from the middle of the first month
        tw = TimeWindow(datetime(2015, 1, 15, 5), datetime(2015, 3, 6, 15))
        self.assertEqual(tw.split_per_month(), [
            TimeWindow(datetime(2015, 1, 15, 5, 0), datetime(2015, 2, 1, 0,
                                                             0)),
            TimeWindow(datetime(2015, 2, 1, 0, 0), datetime(2015, 3, 1, 0, 0)),
            TimeWindow(datetime(2015, 3, 1, 0, 0), datetime(2015, 3, 6, 15, 0))
        ])

        # Span five months, with period greater than 30 days,
        # starting from the 10th day of the first month
        tw = TimeWindow(datetime(2015, 5, 10, 5), datetime(2015, 7, 23, 15))
        self.assertEqual(tw.split_per_month(), [
            TimeWindow(datetime(2015, 5, 10, 5, 0), datetime(2015, 6, 1, 0,
                                                             0)),
            TimeWindow(datetime(2015, 6, 1, 0, 0), datetime(2015, 7, 1, 0, 0)),
            TimeWindow(datetime(2015, 7, 1, 0, 0), datetime(
                2015, 7, 23, 15, 0))
        ])

        # Span two months, with period less than 30 days,
        # starting from December
        tw = TimeWindow(datetime(2015, 12, 15, 5), datetime(2016, 1, 6, 15))
        self.assertEqual(tw.split_per_month(), [
            TimeWindow(datetime(2015, 12, 15, 5, 0), datetime(
                2016, 1, 1, 0, 0)),
            TimeWindow(datetime(2016, 1, 1, 0, 0), datetime(2016, 1, 6, 15, 0))
        ])
示例#18
0
 def __init__(self, wechat_id):
     BaseCheckin.__init__(self, wechat_id)
     self.class_list = self.init_class_records()
     self.enter_time = time.strftime('%H:%M')
     self.section_id = self.init_section_id(self.enter_time)
     self.time_window = TimeWindow()
示例#19
0
 def test_bug_compress_spatial_time_area(self):
     # This case was captured live on debugger.
     tws = TimeWindowsCollection([
         TimeWindow(datetime(2015, 3, 4, 16, 40, 31, 0),
                    datetime(2015, 3, 4, 16, 41, 31, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 43, 44, 0),
                    datetime(2015, 3, 4, 16, 44, 44, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 43, 57, 0),
                    datetime(2015, 3, 4, 16, 44, 57, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 44, 9, 0),
                    datetime(2015, 3, 4, 16, 45, 9, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 44, 22, 0),
                    datetime(2015, 3, 4, 16, 45, 22, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 44, 35, 0),
                    datetime(2015, 3, 4, 16, 45, 35, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 46, 23, 0),
                    datetime(2015, 3, 4, 16, 47, 23, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 46, 40, 0),
                    datetime(2015, 3, 4, 16, 47, 40, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 46, 56, 0),
                    datetime(2015, 3, 4, 16, 47, 56, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 47, 12, 0),
                    datetime(2015, 3, 4, 16, 48, 12, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 47, 28, 0),
                    datetime(2015, 3, 4, 16, 48, 28, 0)),
         TimeWindow(datetime(2015, 3, 4, 16, 47, 44, 0),
                    datetime(2015, 3, 4, 16, 48, 44, 0))
     ])
     res = tws.compressed()
     self.assertEqual(res.time_windows, [
         TimeWindow(datetime(2015, 3, 4, 16, 40, 31),
                    datetime(2015, 3, 4, 16, 41, 31)),
         TimeWindow(datetime(2015, 3, 4, 16, 43, 44),
                    datetime(2015, 3, 4, 16, 45, 35)),
         TimeWindow(datetime(2015, 3, 4, 16, 46, 23),
                    datetime(2015, 3, 4, 16, 48, 44))
     ])
示例#20
0
 def test_property_middle(self):
     now = datetime.now()
     until = now + timedelta(minutes=10)
     tw = TimeWindow(now, until)
     self.assertEqual(tw.middle, now + timedelta(minutes=5))