#[test]
fn height_profile_min_max() {
let hp = enceladuss::surface::heightmaps::HeightProfile::new(vec![10.0, 20.0, 5.0]);
let (min, max) = hp.min_max();
assert!((min - 5.0).abs() < 1e-10);
assert!((max - 20.0).abs() < 1e-10);
}
#[test]
fn roughness_index_positive() {
let hp = enceladuss::surface::heightmaps::HeightProfile::new(vec![10.0, 20.0, 5.0, 25.0]);
assert!(hp.roughness_index() > 0.0);
}
#[test]
fn great_circle_distance_nonzero() {
let a = enceladuss::surface::mapping::EnceladusCoord::new(0.0, 0.0, 0.0);
let b = enceladuss::surface::mapping::EnceladusCoord::new(10.0, 10.0, 0.0);
let d = enceladuss::surface::mapping::great_circle_distance_km(a, b);
assert!(d > 0.0);
}
#[test]
fn antipode_inverts_coordinates() {
let a = enceladuss::surface::mapping::EnceladusCoord::new(15.0, 30.0, 100.0);
let b = enceladuss::surface::mapping::antipode(a);
assert!((b.latitude_deg + 15.0).abs() < 1e-10);
}
#[test]
fn zone_classification_tiger_stripe() {
let z = enceladuss::surface::zones::zone_from_lat_lon(-70.0, 0.0);
assert_eq!(
z.zone,
enceladuss::surface::zones::EnceladusZone::TigerStripeRegion
);
}
#[test]
fn cratered_north_zone() {
let z = enceladuss::surface::zones::zone_from_lat_lon(60.0, 0.0);
assert_eq!(
z.zone,
enceladuss::surface::zones::EnceladusZone::CrateredNorth
);
assert!(z.mean_albedo > 0.90);
}