| """Unit tests for the bin_numeric_column function.""" | |
| import copd | |
| import numpy as np | |
| import pandas as pd | |
| def test_binned_ages(): | |
| """Test output is as expected for typical age binning values.""" | |
| age_bins = [0, 50, 60, 70, 80, np.inf] | |
| labels = ['<50', '50-59', '60-69', '70-79', '80+'] | |
| df = pd.DataFrame({'Age': [10, 49, 50, 55, 59, 60, 65, 69, 70, 75, 79, 80, 85, 100]}) | |
| output = copd.bin_numeric_column(col=df['Age'], bins=age_bins, labels=labels) | |
| assert list(output.values) == ['<50', '<50', '50-59', '50-59', '50-59', '60-69', | |
| '60-69', '60-69', '70-79', '70-79', '70-79', '80+', | |
| '80+', '80+'] | |
| def test_binned_days_since(): | |
| """Test output is as expected for typical days since last exac binning.""" | |
| exac_bins = [-1, 0, 21, 90, 180, np.inf] | |
| labels = ['None', '<21 days', '21 - 89 days', '90 - 179 days', '>= 180 days'] | |
| df = pd.DataFrame({'DaysSince': [-1, 0, 10, 21, 25, 89, 90, 150, 179, 180, 200]}) | |
| output = copd.bin_numeric_column(col=df['DaysSince'], bins=exac_bins, labels=labels) | |
| assert list(output) == ['None', '<21 days', '<21 days', '21 - 89 days', | |
| '21 - 89 days', '21 - 89 days', '90 - 179 days', | |
| '90 - 179 days', '90 - 179 days', '>= 180 days', | |
| '>= 180 days'] | |
| def test_binned_comorbidities(): | |
| """Test output is as expected for typical comorbidity count binning.""" | |
| comorb_bins = [0, 1, 3, np.inf] | |
| labels = ['None', '1-2', '3+'] | |
| df = pd.DataFrame({'Comorbs': [0, 1, 2, 3, 4, 5]}) | |
| output = copd.bin_numeric_column(col=df['Comorbs'], bins=comorb_bins, labels=labels) | |
| assert list(output) == ['None', '1-2', '1-2', '3+', '3+', '3+'] | |