Skip to content
Snippets Groups Projects

Add initial test framework for utils functions

1 file
+ 89
2
Compare changes
  • Side-by-side
  • Inline
+ 89
2
@@ -5,8 +5,9 @@ from rc_gpfs import utils
from polars.testing import assert_series_equal
import polars as pl
import numpy as np
### General Purpose Utils
@pytest.mark.parametrize("path", ["/data/rc/gpfs-policy", Path("/data/rc/gpfs-policy")])
def test_as_path_valid(path: Path | Literal["/data/rc/gpfs-policy"]):
p_path = utils.as_path(path)
@@ -23,6 +24,7 @@ def test_as_path_valid(path: Path | Literal["/data/rc/gpfs-policy"]):
def test_convert_si(value,unit,to_unit,use_binary,expected):
assert utils.convert_si(value,unit,to_unit,use_binary) == expected
### Memory and File Size Utils
@pytest.mark.parametrize(
"val,default,expected",
[
@@ -163,4 +165,89 @@ class TestSizeGrouping:
@pytest.mark.parametrize("bins,expected",list(zip(input_bins,expected_size_groups)),ids=[1,2,3,4])
def test_calculate_size_distribution(self, bins, expected):
assert_series_equal(utils.calculate_size_distribution(self.input_sizes, size_bins=bins),expected)
\ No newline at end of file
assert_series_equal(utils.calculate_size_distribution(self.input_sizes, size_bins=bins),expected)
### DateTime and File Age Utils
@pytest.mark.parametrize(
'date,expected',
[
('2025-01-01',np.datetime64('2025-01-01T00:00:00.000000000')),
(np.datetime64('2025-01-01T00:00:00.000000000'),np.datetime64('2025-01-01T00:00:00.000000000')),
(1735689600000000000,1735689600000000000),
(None,None)
]
)
def test_as_datetime(date,expected):
assert utils.as_datetime(date) == expected
def test_as_datetime_fails():
with pytest.raises(ValueError):
utils.as_datetime('not a date')
@pytest.mark.parametrize('val',[1,3,5])
@pytest.mark.parametrize('unit',['D','W'])
def test_as_timedelta(val,unit):
assert utils.as_timedelta(val,unit) == np.timedelta64(val,unit)
class TestAgeGrouping:
atime = np.arange('2024-08-15','2025-01-15',dtype='datetime64[D]',step=np.timedelta64(30,'D'))
acq_date = '2025-02-01'
delta_vals_days = [
[30,60,90,180],
[0,15,45],
365
]
delta_vals_weeks = [
[4,8,12,16],
[0,1,5,10],
52
]
expected_breakpoints_days = [
[
np.datetime64("2025-01-02T00:00:00.000000000"),
np.datetime64("2024-12-03T00:00:00.000000000"),
np.datetime64("2024-11-03T00:00:00.000000000"),
np.datetime64("2024-08-05T00:00:00.000000000"),
],
[
np.datetime64("2025-01-17T00:00:00.000000000"),
np.datetime64("2024-12-18T00:00:00.000000000"),
],
[
np.datetime64("2024-02-02T00:00:00.000000000")
]
]
expected_labels_days = [
[
'>180D',
'90D-180D',
'60D-90D',
'30D-60D',
'<30D'
],
[
'>45D',
'15D-45D',
'<15D'
],
[
'>365D',
'<365D',
]
]
@pytest.mark.parametrize('delta_vals,expected',list(zip(delta_vals_days,expected_breakpoints_days)))
def test_create_timedelta_breakpoints_days(self,delta_vals,expected):
delta_unit = 'D'
assert utils.create_timedelta_breakpoints(self.acq_date,delta_vals,delta_unit) == expected
@pytest.mark.parametrize('delta_vals,expected',list(zip(delta_vals_days,expected_labels_days)))
def test_create_timedelta_labels_days(self,delta_vals,expected):
delta_unit = "D"
assert utils.create_timedelta_labels(delta_vals,delta_unit) == expected
\ No newline at end of file
Loading