diff --git a/test_times.py b/test_times.py new file mode 100644 index 0000000..35fe83e --- /dev/null +++ b/test_times.py @@ -0,0 +1,19 @@ + + +import times +from times import compute_overlap_time, time_range + +def test_given_example(): + large = time_range("2010-01-12 10:00:00", "2010-01-12 12:00:00") + short = time_range("2010-01-12 10:30:00", "2010-01-12 10:45:00", 2, 60) + result = compute_overlap_time(large, short) + expected = [('2010-01-12 10:30:00', '2010-01-12 10:37:00'), ('2010-01-12 10:38:00', '2010-01-12 10:45:00')] + assert result == expected + +def test_do_no_overlap(): + time1 = time_range("2010-01-12 10:00:00", "2010-01-12 10:30:00") + time2 = time_range("2010-01-12 10:45:00", "2010-01-12 11:00:00", 2, 60) + result = compute_overlap_time(time1, time2) + expected = [] + assert result == expected + diff --git a/times.py b/times.py index d57f401..e8910a3 100644 --- a/times.py +++ b/times.py @@ -1,6 +1,5 @@ import datetime - def time_range(start_time, end_time, number_of_intervals=1, gap_between_intervals_s=0): start_time_s = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S") end_time_s = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") @@ -8,6 +7,8 @@ def time_range(start_time, end_time, number_of_intervals=1, gap_between_interval sec_range = [(start_time_s + datetime.timedelta(seconds=i * d + i * gap_between_intervals_s), start_time_s + datetime.timedelta(seconds=(i + 1) * d + i * gap_between_intervals_s)) for i in range(number_of_intervals)] + #print ([(ta.strftime("%Y-%m-%d %H:%M:%S"), tb.strftime("%Y-%m-%d %H:%M:%S")) for ta, tb in sec_range]) + return [(ta.strftime("%Y-%m-%d %H:%M:%S"), tb.strftime("%Y-%m-%d %H:%M:%S")) for ta, tb in sec_range] @@ -17,10 +18,12 @@ def compute_overlap_time(range1, range2): for start2, end2 in range2: low = max(start1, start2) high = min(end1, end2) - overlap_time.append((low, high)) + #overlap_time.append((low, high)) + if low < high: + overlap_time.append((low, high)) return overlap_time if __name__ == "__main__": large = time_range("2010-01-12 10:00:00", "2010-01-12 12:00:00") short = time_range("2010-01-12 10:30:00", "2010-01-12 10:45:00", 2, 60) - print(compute_overlap_time(large, short)) \ No newline at end of file + print(compute_overlap_time(large, short))