use std::str::FromStr;
use anise::constants::celestial_objects::{EARTH_MOON_BARYCENTER, SOLAR_SYSTEM_BARYCENTER};
use anise::constants::frames::*;
use anise::file2heap;
use anise::prelude::*;
#[test]
fn common_root_verif() {
let _ = pretty_env_logger::try_init();
let epoch = Epoch::from_str("2022-11-15T23:47:36+06:00").unwrap();
for path in [
"../data/de430.bsp",
"../data/de440s.bsp",
"../data/de440.bsp",
] {
let buf = file2heap!(path).unwrap();
let spk = SPK::parse(buf).unwrap();
let ctx = Almanac::from_spk(spk);
assert_eq!(
ctx.try_find_ephemeris_root().unwrap(),
SOLAR_SYSTEM_BARYCENTER
);
for planet_ctr in &[
MERCURY_J2000,
VENUS_J2000,
MARS_BARYCENTER_J2000,
JUPITER_BARYCENTER_J2000,
SATURN_BARYCENTER_J2000,
NEPTUNE_BARYCENTER_J2000,
URANUS_BARYCENTER_J2000,
PLUTO_BARYCENTER_J2000,
] {
assert_eq!(
ctx.common_ephemeris_path(*planet_ctr, MOON_J2000, epoch)
.unwrap()
.2,
SOLAR_SYSTEM_BARYCENTER
);
assert_eq!(
ctx.common_ephemeris_path(MOON_J2000, *planet_ctr, epoch)
.unwrap()
.2,
SOLAR_SYSTEM_BARYCENTER
);
}
assert_eq!(
ctx.common_ephemeris_path(MOON_J2000, EARTH_J2000, epoch)
.unwrap()
.2,
EARTH_MOON_BARYCENTER
);
assert_eq!(
ctx.common_ephemeris_path(EARTH_J2000, MOON_J2000, epoch)
.unwrap()
.2,
EARTH_MOON_BARYCENTER
);
assert_eq!(
ctx.common_ephemeris_path(MOON_J2000, EARTH_MOON_BARYCENTER_J2000, epoch)
.unwrap()
.2,
EARTH_MOON_BARYCENTER
);
assert_eq!(
ctx.common_ephemeris_path(EARTH_MOON_BARYCENTER_J2000, MOON_J2000, epoch)
.unwrap()
.2,
EARTH_MOON_BARYCENTER
);
}
}