Execution Metadata (click to toggle)

i
Untracked Tests:
These tests do not have any associated tracking markers like: Add these markers to your test to track them better
Filter by Markers:
Total tests: 146, Failures: 15, Errors: 0. The slowest test was test_reproduction at 13.26s.
test_reproduction — FAILED
tests/test_backtest.py::test_reproduction main
⏱ 10.54s
Error:
E       AssertionError: DataFrame are different
E       DataFrame shape mismatch
E       [left]:  (2, 21)
E       [right]: (2, 12)
Trace:
def test_reproduction():
        g.show_trace = False
        g.number_of_runs = 2
        g.sim_duration = 24 * 60 * 180
    
        g.sdec_value = 33.3
        g.sdec_unav_freq = 1440 * (g.sdec_value / 100)
        g.sdec_unav_time = 1440 - g.sdec_unav_freq
    
        g.ctp_value = 33.3
        g.ctp_unav_freq = 1440 * (g.ctp_value / 100)
        g.ctp_unav_time = 1440 - g.ctp_unav_freq
    
        g.sdec_opening_hour = 7
        g.ctp_opening_hour = 7
    
        my_trial = Trial()
    
        # Call the run_trial method of our Trial object
        my_trial.run_trial()
    
        df_trial_results = my_trial.df_trial_results
        df_patient_log = my_trial.trial_patient_df
    
        df_trial_results.to_parquet(
            Path(__file__).parent.joinpath(
                "exp_results/df_trial_results_test_comparison.parquet"
            )
        )
        df_patient_log.to_parquet(
            Path(__file__).parent.joinpath(
                "exp_results/df_patient_log_test_comparison.parquet"
            )
        )
    
        # Read in previously generated results
        df_trial_results_exp = pd.read_parquet(
            Path(__file__).parent.joinpath("exp_results/df_trial_results_exp.parquet")
        )
        df_patient_log_exp = pd.read_parquet(
            Path(__file__).parent.joinpath("exp_results/df_patient_log_exp.parquet")
        )
    
        # Check trial-level results are identical
>       pd.testing.assert_frame_equal(
            df_trial_results,
            df_trial_results_exp,
        )
STDOUT:
---------------------------------------------------
Trial 1, SDEC Therapy = False, SDEC Open % = 33.3, CTP Open % = 33.3
Trial 1 Results:
 
Trial Mean Q Time Nurse (Mins):                   1.5
Trial Max Q Time Nurse (Mins):                   141.0
Trial Number of Admissions Avoided:               0.0
Trial Mean Q Time Ward (Hours):                   3399.5
Trial Max Q Time Ward (Hours):                   5721.0
Trial Mean Ward Occupancy:                        1.0
Trial Number of Admission Delays:                 37.5
Trial SDEC Total Savings (£):                     0.0
Trial SDEC Medical Cost (£):                      129600.0
Trial SDEC Savings - Cost (£):                    -129600.0
Trial Thrombolysis Savings (£):                   7037.0
Trial Total Savings (£):                          -122563.0
Mean MRS Change:                                  0.35
Mean Assessed Patients:                                  1896.0
Mean Additional Thrombolysed Patients From CTP Running:                                  113.0
test_reproduction — PASSED
tests/test_reproducibility.py::test_reproduction main
⏱ 13.26s
STDOUT:
---------------------------------------------------
Trial 1, SDEC Therapy = False, SDEC Open % = 33.3, CTP Open % = 33.3
Trial 1 Results:
 
Trial Mean Q Time Nurse (Mins):                   1.0
Trial Max Q Time Nurse (Mins):                   123.0
Trial Number of Admissions Avoided:               0.0
Trial Mean Q Time Ward (Hours):                   2445.0
Trial Max Q Time Ward (Hours):                   3518.0
Trial Mean Ward Occupancy:                        1.0
Trial Number of Admission Delays:                 15.0
Trial SDEC Total Savings (£):                     0.0
Trial SDEC Medical Cost (£):                      64800.0
Trial SDEC Savings - Cost (£):                    -64800.0
Trial Thrombolysis Savings (£):                   570.5
Trial Total Savings (£):                          -64229.5
Mean MRS Change:                                  0.24
Mean Assessed Patients:                                  1196.0
Mean Additional Thrombolysed Patients From CTP Running:                                  73.0
---------------------------------------------------
Trial 1, SDEC Therapy = False, SDEC Open % = 33.3, CTP Open % = 33.3
Trial 1 Results:
 
Trial Mean Q Time Nurse (Mins):                   1.0
Trial Max Q Time Nurse (Mins):                   123.0
Trial Number of Admissions Avoided:               0.0
Trial Mean Q Time Ward (Hours):                   2445.0
Trial Max Q Time Ward (Hours):                   3518.0
Trial Mean Ward Occupancy:                        1.0
Trial Number of Admission Delays:                 15.0
Trial SDEC Total Savings (£):                     0.0
Trial SDEC Medical Cost (£):                      64800.0
Trial SDEC Savings - Cost (£):                    -64800.0
Trial Thrombolysis Savings (£):                   570.5
Trial Total Savings (£):                          -64229.5
Mean MRS Change:                                  0.24
Mean Assessed Patients:                                  1196.0
Mean Additional Thrombolysed Patients From CTP Running:                                  73.0
test_different_seed_different_results — PASSED
tests/test_reproducibility.py::test_different_seed_different_results main
⏱ 9.81s
STDOUT:
---------------------------------------------------
Trial 1, SDEC Therapy = False, SDEC Open % = 33.3, CTP Open % = 33.3
Trial 1 Results:
 
Trial Mean Q Time Nurse (Mins):                   1.0
Trial Max Q Time Nurse (Mins):                   123.0
Trial Number of Admissions Avoided:               0.0
Trial Mean Q Time Ward (Hours):                   2445.0
Trial Max Q Time Ward (Hours):                   3518.0
Trial Mean Ward Occupancy:                        1.0
Trial Number of Admission Delays:                 15.0
Trial SDEC Total Savings (£):                     0.0
Trial SDEC Medical Cost (£):                      64800.0
Trial SDEC Savings - Cost (£):                    -64800.0
Trial Thrombolysis Savings (£):                   570.5
Trial Total Savings (£):                          -64229.5
Mean MRS Change:                                  0.24
Mean Assessed Patients:                                  1196.0
Mean Additional Thrombolysed Patients From CTP Running:                                  73.0
---------------------------------------------------
Trial 1, SDEC Therapy = False, SDEC Open % = 33.3, CTP Open % = 33.3
Trial 1 Results:
 
Trial Mean Q Time Nurse (Mins):                   1.5
Trial Max Q Time Nurse (Mins):                   114.0
Trial Number of Admissions Avoided:               0.0
Trial Mean Q Time Ward (Hours):                   2125.0
Trial Max Q Time Ward (Hours):                   3258.0
Trial Mean Ward Occupancy:                        1.0
Trial Number of Admission Delays:                 7.5
Trial SDEC Total Savings (£):                     0.0
Trial SDEC Medical Cost (£):                      64800.0
Trial SDEC Savings - Cost (£):                    -64800.0
Trial Thrombolysis Savings (£):                   2275.0
Trial Total Savings (£):                          -62525.0
Mean MRS Change:                                  0.7
Mean Assessed Patients:                                  1200.5
Mean Additional Thrombolysed Patients From CTP Running:                                  63.0
test_dist_mean_patient_inter_day_dist_patient_inter_day_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[patient_inter_day_dist-patient_inter_day] main
⏱ 0.00s
test_dist_mean_patient_inter_night_dist_patient_inter_night_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[patient_inter_night_dist-patient_inter_night] main
⏱ 0.00s
test_dist_mean_nurse_consult_time_dist_mean_n_consult_time_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[nurse_consult_time_dist-mean_n_consult_time] main
⏱ 0.00s
test_dist_mean_ct_time_dist_mean_n_ct_time_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ct_time_dist-mean_n_ct_time] main
⏱ 0.00s
test_dist_mean_sdec_time_dist_mean_n_sdec_time_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[sdec_time_dist-mean_n_sdec_time] main
⏱ 0.00s
test_dist_mean_i_ward_time_mrs_0_dist_mean_n_i_ward_time_mrs_0_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_ward_time_mrs_0_dist-mean_n_i_ward_time_mrs_0] main
⏱ 0.00s
test_dist_mean_i_ward_time_mrs_1_dist_mean_n_i_ward_time_mrs_1_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_ward_time_mrs_1_dist-mean_n_i_ward_time_mrs_1] main
⏱ 0.00s
test_dist_mean_i_ward_time_mrs_2_dist_mean_n_i_ward_time_mrs_2_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_ward_time_mrs_2_dist-mean_n_i_ward_time_mrs_2] main
⏱ 0.00s
test_dist_mean_i_ward_time_mrs_3_dist_mean_n_i_ward_time_mrs_3_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_ward_time_mrs_3_dist-mean_n_i_ward_time_mrs_3] main
⏱ 0.00s
test_dist_mean_i_ward_time_mrs_4_dist_mean_n_i_ward_time_mrs_4_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_ward_time_mrs_4_dist-mean_n_i_ward_time_mrs_4] main
⏱ 0.00s
test_dist_mean_i_ward_time_mrs_5_dist_mean_n_i_ward_time_mrs_5_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_ward_time_mrs_5_dist-mean_n_i_ward_time_mrs_5] main
⏱ 0.00s
test_dist_mean_ich_ward_time_mrs_0_dist_mean_n_ich_ward_time_mrs_0_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_ward_time_mrs_0_dist-mean_n_ich_ward_time_mrs_0] main
⏱ 0.00s
test_dist_mean_ich_ward_time_mrs_1_dist_mean_n_ich_ward_time_mrs_1_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_ward_time_mrs_1_dist-mean_n_ich_ward_time_mrs_1] main
⏱ 0.00s
test_dist_mean_ich_ward_time_mrs_2_dist_mean_n_ich_ward_time_mrs_2_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_ward_time_mrs_2_dist-mean_n_ich_ward_time_mrs_2] main
⏱ 0.00s
test_dist_mean_ich_ward_time_mrs_3_dist_mean_n_ich_ward_time_mrs_3_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_ward_time_mrs_3_dist-mean_n_ich_ward_time_mrs_3] main
⏱ 0.00s
test_dist_mean_ich_ward_time_mrs_4_dist_mean_n_ich_ward_time_mrs_4_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_ward_time_mrs_4_dist-mean_n_ich_ward_time_mrs_4] main
⏱ 0.00s
test_dist_mean_ich_ward_time_mrs_5_dist_mean_n_ich_ward_time_mrs_5_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_ward_time_mrs_5_dist-mean_n_ich_ward_time_mrs_5] main
⏱ 0.00s
test_dist_mean_tia_ward_time_dist_mean_n_tia_ward_time_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[tia_ward_time_dist-mean_n_tia_ward_time] main
⏱ 0.00s
test_dist_mean_non_stroke_ward_time_dist_mean_n_non_stroke_ward_time_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[non_stroke_ward_time_dist-mean_n_non_stroke_ward_time] main
⏱ 0.00s
test_dist_mean_mrs_type_distribution_mean_mrs_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[mrs_type_distribution-mean_mrs] main
⏱ 0.00s
test_dist_mean_ich_range_distribution_ich_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[ich_range_distribution-ich] main
⏱ 0.00s
test_dist_mean_i_range_distribution_i_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[i_range_distribution-i] main
⏱ 0.00s
test_dist_mean_tia_range_distribution_tia_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[tia_range_distribution-tia] main
⏱ 0.00s
test_dist_mean_stroke_mimic_range_distribution_stroke_mimic_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[stroke_mimic_range_distribution-stroke_mimic] main
⏱ 0.00s
test_dist_mean_non_stroke_range_distribution_stroke_mimic_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[non_stroke_range_distribution-stroke_mimic] main
⏱ 0.00s
test_dist_mean_tia_admission_chance_distribution_tia_admission_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[tia_admission_chance_distribution-tia_admission] main
⏱ 0.00s
test_dist_mean_stroke_mimic_admission_chance_distribution_stroke_mimic_admission_ — PASSED
tests/test_unit_distributions.py::test_dist_mean[stroke_mimic_admission_chance_distribution-stroke_mimic_admission] main
⏱ 0.00s
test_discrete_empirical_parameters_onset_type_distribution_exp_values0_exp_freq0_ — PASSED
tests/test_unit_distributions.py::test_discrete_empirical_parameters[onset_type_distribution-exp_values0-exp_freq0] main
⏱ 0.00s
test_discrete_empirical_parameters_diagnosis_distribution_exp_values1_exp_freq1_ — PASSED
tests/test_unit_distributions.py::test_discrete_empirical_parameters[diagnosis_distribution-exp_values1-exp_freq1] main
⏱ 0.00s
test_discrete_empirical_parameters_non_admission_distribution_exp_values2_exp_freq2_ — PASSED
tests/test_unit_distributions.py::test_discrete_empirical_parameters[non_admission_distribution-exp_values2-exp_freq2] main
⏱ 0.00s
test_discrete_empirical_parameters_mrs_reduction_during_stay_exp_values3_exp_freq3_ — PASSED
tests/test_unit_distributions.py::test_discrete_empirical_parameters[mrs_reduction_during_stay-exp_values3-exp_freq3] main
⏱ 0.00s
test_discrete_empirical_parameters_mrs_reduction_during_stay_thrombolysed_exp_values4_exp_freq4_ — PASSED
tests/test_unit_distributions.py::test_discrete_empirical_parameters[mrs_reduction_during_stay_thrombolysed-exp_values4-exp_freq4] main
⏱ 0.01s
test_unique_seeds — PASSED
tests/test_unit_distributions.py::test_unique_seeds main
⏱ 0.01s
test_patient_default_attributes_id_expected_type0_value_123_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[id-expected_type0-value-123-None] main
⏱ 0.00s
test_patient_default_attributes_q_time_nurse_expected_type1_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[q_time_nurse-expected_type1-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_q_time_ward_expected_type2_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[q_time_ward-expected_type2-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_onset_type_expected_type3_nan_None_allowed_values3_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[onset_type-expected_type3-nan-None-allowed_values3] main
⏱ 0.00s
test_patient_default_attributes_mrs_type_expected_type4_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[mrs_type-expected_type4-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_mrs_discharge_expected_type5_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[mrs_discharge-expected_type5-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_diagnosis_expected_type6_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[diagnosis-expected_type6-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_patient_diagnosis_expected_type7_nan_None_allowed_values7_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[patient_diagnosis-expected_type7-nan-None-allowed_values7] main
⏱ 0.00s
test_patient_default_attributes_patient_diagnosis_type_expected_type8_value_None_allowed_values8_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[patient_diagnosis_type-expected_type8-value-None-allowed_values8] main
⏱ 0.00s
test_patient_default_attributes_priority_expected_type9_value_1_allowed_values9_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[priority-expected_type9-value-1-allowed_values9] main
⏱ 0.00s
test_patient_default_attributes_non_admission_expected_type10_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[non_admission-expected_type10-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_advanced_ct_pathway_expected_type11_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[advanced_ct_pathway-expected_type11-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_pathway_expected_type12_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_pathway-expected_type12-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_thrombolysis_expected_type13_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[thrombolysis-expected_type13-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_thrombectomy_expected_type14_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[thrombectomy-expected_type14-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_admission_avoidance_expected_type15_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[admission_avoidance-expected_type15-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_non_admitted_tia_ns_sm_expected_type16_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[non_admitted_tia_ns_sm-expected_type16-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_ward_los_expected_type17_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ward_los-expected_type17-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ward_los_thrombolysis_expected_type18_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ward_los_thrombolysis-expected_type18-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_los_expected_type19_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_los-expected_type19-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ctp_duration_expected_type20_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ctp_duration-expected_type20-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ct_duration_expected_type21_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ct_duration-expected_type21-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_arrived_ooh_expected_type22_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[arrived_ooh-expected_type22-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_clock_start_expected_type23_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[clock_start-expected_type23-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_nurse_q_start_time_expected_type24_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[nurse_q_start_time-expected_type24-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_nurse_triage_start_time_expected_type25_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[nurse_triage_start_time-expected_type25-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_nurse_triage_end_time_expected_type26_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[nurse_triage_end_time-expected_type26-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ct_scan_start_time_expected_type27_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ct_scan_start_time-expected_type27-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ct_scan_end_time_expected_type28_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ct_scan_end_time-expected_type28-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ctp_scan_start_time_expected_type29_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ctp_scan_start_time-expected_type29-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ctp_scan_end_time_expected_type30_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ctp_scan_end_time-expected_type30-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_admit_time_expected_type31_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_admit_time-expected_type31-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_discharge_time_expected_type32_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_discharge_time-expected_type32-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ward_q_start_time_expected_type33_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ward_q_start_time-expected_type33-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ward_admit_time_expected_type34_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ward_admit_time-expected_type34-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ward_discharge_time_expected_type35_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ward_discharge_time-expected_type35-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_exit_time_expected_type36_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[exit_time-expected_type36-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_nurse_attending_id_expected_type37_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[nurse_attending_id-expected_type37-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ct_scanner_id_expected_type38_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ct_scanner_id-expected_type38-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_bed_id_expected_type39_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_bed_id-expected_type39-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_ward_bed_id_expected_type40_nan_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[ward_bed_id-expected_type40-nan-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_running_when_required_expected_type41_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_running_when_required-expected_type41-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_sdec_full_when_required_expected_type42_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[sdec_full_when_required-expected_type42-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_generated_during_warm_up_expected_type43_none_None_None_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[generated_during_warm_up-expected_type43-none-None-None] main
⏱ 0.00s
test_patient_default_attributes_journey_completed_expected_type44_value_False_allowed_values44_ — PASSED
tests/test_unit_entities.py::test_patient_default_attributes[journey_completed-expected_type44-value-False-allowed_values44] main
⏱ 0.00s
test_g_default_attributes_sim_duration_expected_type0_525600_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[sim_duration-expected_type0-525600-None] main
⏱ 0.00s
Error:
E       assert 129600 == 525600
Trace:
attr = 'sim_duration', expected_type = (,), expected_value = 525600, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_number_of_runs_expected_type1_10_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[number_of_runs-expected_type1-10-None] main
⏱ 0.00s
Error:
E       assert 2 == 10
Trace:
attr = 'number_of_runs', expected_type = (,), expected_value = 10, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_warm_up_period_expected_type2_105120_0_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[warm_up_period-expected_type2-105120.0-None] main
⏱ 0.00s
test_g_default_attributes_patient_inter_day_expected_type3_200_0_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[patient_inter_day-expected_type3-200.0-None] main
⏱ 0.00s
test_g_default_attributes_patient_inter_night_expected_type4_666_666666666667_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[patient_inter_night-expected_type4-666.666666666667-None] main
⏱ 0.00s
test_g_default_attributes_number_of_nurses_expected_type5_2_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[number_of_nurses-expected_type5-2-None] main
⏱ 0.00s
test_g_default_attributes_number_of_ctp_expected_type6_1_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[number_of_ctp-expected_type6-1-None] main
⏱ 0.00s
test_g_default_attributes_sdec_beds_expected_type7_5_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[sdec_beds-expected_type7-5-None] main
⏱ 0.00s
test_g_default_attributes_number_of_ward_beds_expected_type8_1_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[number_of_ward_beds-expected_type8-1-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_consult_time_expected_type9_60_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_consult_time-expected_type9-60-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ct_time_expected_type10_20_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ct_time-expected_type10-20-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_sdec_time_expected_type11_240_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_sdec_time-expected_type11-240-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_i_ward_time_mrs_0_expected_type12_4147_2_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_i_ward_time_mrs_0-expected_type12-4147.2-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_i_ward_time_mrs_1_expected_type13_6537_6_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_i_ward_time_mrs_1-expected_type13-6537.6-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_i_ward_time_mrs_2_expected_type14_10656_0_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_i_ward_time_mrs_2-expected_type14-10656.0-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_i_ward_time_mrs_3_expected_type15_20361_600000000002_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_i_ward_time_mrs_3-expected_type15-20361.600000000002-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_i_ward_time_mrs_4_expected_type16_37526_4_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_i_ward_time_mrs_4-expected_type16-37526.4-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_i_ward_time_mrs_5_expected_type17_42768_0_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_i_ward_time_mrs_5-expected_type17-42768.0-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ich_ward_time_mrs_0_expected_type18_3772_8_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ich_ward_time_mrs_0-expected_type18-3772.8-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ich_ward_time_mrs_1_expected_type19_10123_2_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ich_ward_time_mrs_1-expected_type19-10123.2-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ich_ward_time_mrs_2_expected_type20_17496_0_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ich_ward_time_mrs_2-expected_type20-17496.0-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ich_ward_time_mrs_3_expected_type21_27230_4_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ich_ward_time_mrs_3-expected_type21-27230.4-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ich_ward_time_mrs_4_expected_type22_46728_00000000001_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ich_ward_time_mrs_4-expected_type22-46728.00000000001-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_ich_ward_time_mrs_5_expected_type23_60235_2_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_ich_ward_time_mrs_5-expected_type23-60235.2-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_non_stroke_ward_time_expected_type24_4320_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_non_stroke_ward_time-expected_type24-4320-None] main
⏱ 0.00s
test_g_default_attributes_mean_n_tia_ward_time_expected_type25_1440_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_n_tia_ward_time-expected_type25-1440-None] main
⏱ 0.00s
test_g_default_attributes_thrombolysis_los_save_expected_type26_0_75_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[thrombolysis_los_save-expected_type26-0.75-None] main
⏱ 0.00s
test_g_default_attributes_mean_mrs_expected_type27_2_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[mean_mrs-expected_type27-2-None] main
⏱ 0.00s
test_g_default_attributes_ich_expected_type28_10_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[ich-expected_type28-10-None] main
⏱ 0.00s
test_g_default_attributes_i_expected_type29_60_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[i-expected_type29-60-None] main
⏱ 0.00s
test_g_default_attributes_tia_expected_type30_70_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[tia-expected_type30-70-None] main
⏱ 0.00s
test_g_default_attributes_stroke_mimic_expected_type31_80_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[stroke_mimic-expected_type31-80-None] main
⏱ 0.00s
test_g_default_attributes_tia_admission_expected_type32_10_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[tia_admission-expected_type32-10-None] main
⏱ 0.00s
test_g_default_attributes_stroke_mimic_admission_expected_type33_30_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[stroke_mimic_admission-expected_type33-30-None] main
⏱ 0.00s
test_g_default_attributes_sdec_unav_time_expected_type34_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[sdec_unav_time-expected_type34-0-None] main
⏱ 0.00s
Error:
E       AssertionError: assert False
E        +  where False = isinstance(960.48, (,))
Trace:
attr = 'sdec_unav_time', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
>       assert isinstance(value, expected_type)
test_g_default_attributes_sdec_unav_freq_expected_type35_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[sdec_unav_freq-expected_type35-0-None] main
⏱ 0.00s
Error:
E       AssertionError: assert False
E        +  where False = isinstance(479.5199999999999, (,))
Trace:
attr = 'sdec_unav_freq', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
>       assert isinstance(value, expected_type)
test_g_default_attributes_ctp_unav_time_expected_type36_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[ctp_unav_time-expected_type36-0-None] main
⏱ 0.00s
Error:
E       AssertionError: assert False
E        +  where False = isinstance(960.48, (,))
Trace:
attr = 'ctp_unav_time', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
>       assert isinstance(value, expected_type)
test_g_default_attributes_ctp_unav_freq_expected_type37_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[ctp_unav_freq-expected_type37-0-None] main
⏱ 0.00s
Error:
E       AssertionError: assert False
E        +  where False = isinstance(479.5199999999999, (,))
Trace:
attr = 'ctp_unav_freq', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
>       assert isinstance(value, expected_type)
test_g_default_attributes_sdec_value_expected_type38_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[sdec_value-expected_type38-0-None] main
⏱ 0.00s
Error:
E       AssertionError: assert False
E        +  where False = isinstance(33.3, (,))
Trace:
attr = 'sdec_value', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
>       assert isinstance(value, expected_type)
test_g_default_attributes_ctp_value_expected_type39_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[ctp_value-expected_type39-0-None] main
⏱ 0.00s
Error:
E       AssertionError: assert False
E        +  where False = isinstance(33.3, (,))
Trace:
attr = 'ctp_value', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
>       assert isinstance(value, expected_type)
test_g_default_attributes_sdec_opening_hour_expected_type40_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[sdec_opening_hour-expected_type40-0-None] main
⏱ 0.00s
Error:
E       assert 7 == 0
Trace:
attr = 'sdec_opening_hour', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_ctp_opening_hour_expected_type41_0_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[ctp_opening_hour-expected_type41-0-None] main
⏱ 0.00s
Error:
E       assert 7 == 0
Trace:
attr = 'ctp_opening_hour', expected_type = (,), expected_value = 0, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_in_hours_start_expected_type42_7_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[in_hours_start-expected_type42-7-None] main
⏱ 0.00s
test_g_default_attributes_ooh_start_expected_type43_0_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[ooh_start-expected_type43-0-None] main
⏱ 0.00s
test_g_default_attributes_sdec_unav_expected_type44_False_allowed_values44_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[sdec_unav-expected_type44-False-allowed_values44] main
⏱ 0.00s
Error:
E       assert True == False
Trace:
attr = 'sdec_unav', expected_type = (,), expected_value = False, allowed_values = {False, True}

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_ctp_unav_expected_type45_False_allowed_values45_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[ctp_unav-expected_type45-False-allowed_values45] main
⏱ 0.00s
Error:
E       assert True == False
Trace:
attr = 'ctp_unav', expected_type = (,), expected_value = False, allowed_values = {False, True}

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_write_to_csv_expected_type46_False_allowed_values46_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[write_to_csv-expected_type46-False-allowed_values46] main
⏱ 0.00s
test_g_default_attributes_gen_graph_expected_type47_False_allowed_values47_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[gen_graph-expected_type47-False-allowed_values47] main
⏱ 0.00s
test_g_default_attributes_therapy_sdec_expected_type48_False_allowed_values48_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[therapy_sdec-expected_type48-False-allowed_values48] main
⏱ 0.00s
test_g_default_attributes_patient_arrival_gen_1_expected_type49_False_allowed_values49_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[patient_arrival_gen_1-expected_type49-False-allowed_values49] main
⏱ 0.00s
Error:
E       assert True == False
Trace:
attr = 'patient_arrival_gen_1', expected_type = (,), expected_value = False, allowed_values = {False, True}

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_g_default_attributes_patient_arrival_gen_2_expected_type50_False_allowed_values50_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[patient_arrival_gen_2-expected_type50-False-allowed_values50] main
⏱ 0.00s
test_g_default_attributes_show_trace_expected_type51_False_allowed_values51_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[show_trace-expected_type51-False-allowed_values51] main
⏱ 0.00s
test_g_default_attributes_tracked_cases_expected_type52_expected_value52_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[tracked_cases-expected_type52-expected_value52-None] main
⏱ 0.00s
test_g_default_attributes_trace_config_expected_type53_expected_value53_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[trace_config-expected_type53-expected_value53-None] main
⏱ 0.00s
test_g_default_attributes_trials_run_counter_expected_type54_1_None_ — PASSED
tests/test_unit_inputs.py::test_g_default_attributes[trials_run_counter-expected_type54-1-None] main
⏱ 0.00s
test_g_default_attributes_master_seed_expected_type55_42_None_ — FAILED
tests/test_unit_inputs.py::test_g_default_attributes[master_seed-expected_type55-42-None] main
⏱ 0.00s
Error:
E       assert 134 == 42
Trace:
attr = 'master_seed', expected_type = (,), expected_value = 42, allowed_values = None

    @pytest.mark.parametrize(
        "attr, expected_type, expected_value, allowed_values",
        [
            # Simulation runtime
            ("sim_duration", (int,), 525600, None),
            ("number_of_runs", (int,), 10, None),
            ("warm_up_period", (float, int, np.floating), g.sim_duration / 5, None),
    
            # Patient interarrival times
            ("patient_inter_day", (float, np.floating), 200.0, None),
            ("patient_inter_night", (float, np.floating), 666.666666666667, None),
    
            # Capacities
            ("number_of_nurses", (int,), 2, None),
            ("number_of_ctp", (int,), 1, None),
            ("sdec_beds", (int,), 5, None),
            ("number_of_ward_beds", (int,), 1, None),
    
            # Process times
            ("mean_n_consult_time", (int,), 60, None),
            ("mean_n_ct_time", (int,), 20, None),
            ("mean_n_sdec_time", (int,), 240, None),
    
            # Ischaemic LOS by MRS
            ("mean_n_i_ward_time_mrs_0", (float, np.floating), 1440 * 2.88, None),
            ("mean_n_i_ward_time_mrs_1", (float, np.floating), 1440 * 4.54, None),
            ("mean_n_i_ward_time_mrs_2", (float, np.floating), 1440 * 7.4, None),
            ("mean_n_i_ward_time_mrs_3", (float, np.floating), 1440 * 14.14, None),
            ("mean_n_i_ward_time_mrs_4", (float, np.floating), 1440 * 26.06, None),
            ("mean_n_i_ward_time_mrs_5", (float, np.floating), 1440 * 29.7, None),
    
            # ICH LOS by MRS
            ("mean_n_ich_ward_time_mrs_0",
             (float, np.floating), 1440 * 2.62, None),
            ("mean_n_ich_ward_time_mrs_1",
             (float, np.floating), 1440 * 7.03, None),
            ("mean_n_ich_ward_time_mrs_2",
             (float, np.floating), 1440 * 12.15, None),
            ("mean_n_ich_ward_time_mrs_3",
             (float, np.floating), 1440 * 18.91, None),
            ("mean_n_ich_ward_time_mrs_4",
             (float, np.floating), 1440 * 32.45, None),
            ("mean_n_ich_ward_time_mrs_5",
             (float, np.floating), 1440 * 41.83, None),
    
            # Other LOS
            ("mean_n_non_stroke_ward_time", (int,), 1440 * 3, None),
            ("mean_n_tia_ward_time", (int,), 1440 * 1, None),
            ("thrombolysis_los_save", (float, np.floating), 0.75, None),
    
            # Diagnosis mix and MRS
            ("mean_mrs", (int,), 2, None),
            ("ich", (int,), 10, None),
            ("i", (int,), 60, None),
            ("tia", (int,), 70, None),
            ("stroke_mimic", (int,), 80, None),
            ("tia_admission", (int,), 10, None),
            ("stroke_mimic_admission", (int,), 30, None),
    
            # Operational unavailability parameters
            ("sdec_unav_time", (int,), 0, None),
            ("sdec_unav_freq", (int,), 0, None),
            ("ctp_unav_time", (int,), 0, None),
            ("ctp_unav_freq", (int,), 0, None),
    
            # User-settable value placeholders
            ("sdec_value", (int,), 0, None),
            ("ctp_value", (int,), 0, None),
            ("sdec_opening_hour", (int,), 0, None),
            ("ctp_opening_hour", (int,), 0, None),
            ("in_hours_start", (int,), 7, None),
            ("ooh_start", (int,), 0, None),
    
            # Boolean runtime flags
            ("sdec_unav", (bool,), False, {True, False}),
            ("ctp_unav", (bool,), False, {True, False}),
            ("write_to_csv", (bool,), False, {True, False}),
            ("gen_graph", (bool,), False, {True, False}),
            ("therapy_sdec", (bool,), False, {True, False}),
            ("patient_arrival_gen_1", (bool,), False, {True, False}),
            ("patient_arrival_gen_2", (bool,), False, {True, False}),
            ("show_trace", (bool,), False, {True, False}),
    
            # Trace config
            ("tracked_cases", (list,), list(range(1, 1500)), None),
            ("trace_config", (dict,), {"tracked": list(range(1, 1500))}, None),
    
            # Seeds and counters
            ("trials_run_counter", (int,), 1, None),
            ("master_seed", (int,), 42, None),
        ],
    )
    def test_g_default_attributes(
        attr, expected_type, expected_value, allowed_values
    ):
        """Check each g attribute exists and has the expected default."""
        value = getattr(g, attr)
    
        assert isinstance(value, expected_type)
>       assert value == expected_value
test_trialplots — PASSED
tests/test_unit_plots.py::test_trialplots main
⏱ 0.57s
test_minutes_to_ampm_0_12_00_AM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[0-12:00 AM] main
⏱ 0.00s
test_minutes_to_ampm_60_1_00_AM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[60-1:00 AM] main
⏱ 0.00s
test_minutes_to_ampm_719_11_59_AM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[719-11:59 AM] main
⏱ 0.00s
test_minutes_to_ampm_720_12_00_PM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[720-12:00 PM] main
⏱ 0.00s
test_minutes_to_ampm_785_1_05_PM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[785-1:05 PM] main
⏱ 0.00s
test_minutes_to_ampm_1439_11_59_PM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[1439-11:59 PM] main
⏱ 0.00s
test_minutes_to_ampm_1440_12_00_AM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[1440-12:00 AM] main
⏱ 0.00s
test_minutes_to_ampm_1515_1_15_AM_ — PASSED
tests/test_unit_utils.py::test_minutes_to_ampm[1515-1:15 AM] main
⏱ 0.00s