#[test]
fn dust_volcanic_plume_lofting() {
let d = ioss::environment::dust::DustEnvironment::volcanic_plume();
assert!(d.lofting_probability > 0.5);
assert!(d.adhesion_risk(100.0) > 0.0);
}
#[test]
fn dust_frost_lower_risk() {
let v = ioss::environment::dust::DustEnvironment::volcanic_plume();
let f = ioss::environment::dust::DustEnvironment::sulfur_frost();
assert!(f.adhesion_risk(0.0) < v.adhesion_risk(0.0));
}
#[test]
fn radiation_nominal_surface() {
let r = ioss::environment::radiation::RadiationEnvironment::nominal_surface();
assert!(r.effective_daily_dose_msv() > 10.0);
}
#[test]
fn radiation_sheltered_lower() {
let nom = ioss::environment::radiation::RadiationEnvironment::nominal_surface();
let shel = ioss::environment::radiation::RadiationEnvironment::sheltered(2.0);
assert!(shel.effective_daily_dose_msv() < nom.effective_daily_dose_msv());
}
#[test]
fn annual_dose_extreme() {
let r = ioss::environment::radiation::RadiationEnvironment::nominal_surface();
assert!(ioss::environment::radiation::annual_crew_dose_msv(r) > 1000.0);
}
#[test]
fn thermal_surface_temp_in_range() {
let t = ioss::environment::thermal::ThermalEnvironment {
local_time_hours: 21.0,
latitude_deg: 0.0,
shadowed: false,
};
let temp = t.surface_temperature_k();
assert!((90.0..=2000.0).contains(&temp));
}
#[test]
fn shadow_reduces_temperature() {
let lit = ioss::environment::thermal::ThermalEnvironment {
local_time_hours: 21.0,
latitude_deg: 0.0,
shadowed: false,
};
let dark = ioss::environment::thermal::ThermalEnvironment {
local_time_hours: 21.0,
latitude_deg: 0.0,
shadowed: true,
};
assert!(dark.surface_temperature_k() <= lit.surface_temperature_k());
}
#[test]
fn thermal_cycle_span_positive() {
assert!(ioss::environment::thermal::thermal_cycle_span_k(0.0) > 0.0);
}