Skip to content
26 changes: 26 additions & 0 deletions .github/workflows/python-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Python package

on: [push]

jobs:
build:

runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.10"]

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
# This case we are only updating pip, but you could add other dependencies needed.
run: |
python3 -m pip install --upgrade pip
python3 -m pip install pytest
- name: Test with pytest
run: |
python3 -m pytest
60 changes: 60 additions & 0 deletions test_times.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import times
from times import time_range
from times import compute_overlap_time
#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))

def test_given_input():
intervals1 = time_range("2010-01-12 10:00:00", "2010-01-12 12:00:00")
intervals2 = time_range("2010-01-12 10:30:00", "2010-01-12 10:45:00", 2, 60)

result = compute_overlap_time(intervals1, intervals2)
print('Result: ', result)
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')]
print('Expected: ', expected)
assert result == expected


def test_no_overlap():

intervals1 = time_range("2010-01-12 10:00:00", "2010-01-12 12:00:00")
intervals2 = time_range("2010-01-12 16:00:00", "2010-01-12 19:00:00", 2, 60*60)

result = compute_overlap_time(intervals1, intervals2)
print('Result: ', result)
expected = []
print('Expected: ', expected)
assert result == expected
'''
def test_multiple_ranges():

intervals1 = time_range("2010-01-12 10:00:00", "2010-01-12 13:00:00", 2, 3600)
intervals2 = time_range("2010-01-12 11:00:00", "2010-01-12 14:00:00", 2, 60*60)

result = compute_overlap_time(intervals1, intervals2)
print('Result: ', result)
expected = [('2010-01-12 11:00:00', '2010-01-12 11:00:00'), \
('2010-01-12 12:00:00', '2010-01-12 12:00:00')]
print('Expected: ', expected)
assert result == expected
'''
'''
def test_same_time():

intervals1 = time_range("2010-01-12 10:00:00", "2010-01-12 12:00:00")
intervals2 = time_range("2010-01-12 09:00:00", "2010-01-12 12:00:00", 2, 60*60)

result = compute_overlap_time(intervals1, intervals2)
print('Result: ', result)
expected = [("2010-01-12 10:00:00", "2010-01-12 10:00:00"),\
("2010-01-12 11:00:00", "2010-01-12 12:00:00")]
print('Expected: ', expected)
assert result == expected

'''
'''
def test_interval():
wrong_interval = time_range("2010-01-12 12:00:00", "2010-01-12 10:00:00")
'''
9 changes: 7 additions & 2 deletions times.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
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")

if (start_time_s > end_time_s):
raise ValueError('Interval cannot start with a time later than the end time.')

d = (end_time_s - start_time_s).total_seconds() / number_of_intervals + gap_between_intervals_s * (1 / number_of_intervals - 1)
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))
Expand All @@ -23,4 +26,6 @@ def compute_overlap_time(range1, range2):
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))
print(compute_overlap_time(large, short))