1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub use use_astronomical_coordinate as astronomical_coordinate;
5pub use use_astronomical_observation as astronomical_observation;
6pub use use_astronomical_orbit as orbit;
7pub use use_catalog_object as catalog_object;
8pub use use_celestial_body as celestial_body;
9pub use use_constellation as constellation;
10pub use use_epoch as epoch;
11pub use use_magnitude as magnitude;
12pub use use_moon as moon;
13pub use use_orbital_element as orbital_element;
14pub use use_planet as planet;
15pub use use_star as star;
16
17#[cfg(test)]
18mod tests {
19 use super::{
20 astronomical_coordinate, astronomical_observation, catalog_object, celestial_body,
21 constellation, epoch, magnitude, moon, orbit, orbital_element, planet, star,
22 };
23
24 #[test]
25 fn facade_composes_astronomy_primitives_without_simulation() {
26 let body_kind = celestial_body::CelestialBodyKind::Star;
27 let spectral_class = star::SpectralClass::G;
28 let planet_kind = planet::PlanetKind::Terrestrial;
29 let moon_kind = moon::MoonKind::Regular;
30 let orbit_kind = orbit::OrbitKind::Heliocentric;
31 let eccentricity = orbital_element::OrbitalElement::new(
32 orbital_element::OrbitalElementKind::Eccentricity,
33 orbital_element::OrbitalElementValue::new(0.0167).unwrap(),
34 )
35 .unwrap();
36 let coordinate = astronomical_coordinate::AstronomicalCoordinate::new(
37 astronomical_coordinate::RightAscension::from_degrees(279.234_734_79).unwrap(),
38 astronomical_coordinate::Declination::new(38.783_688_96).unwrap(),
39 astronomical_coordinate::CoordinateFrame::Equatorial,
40 astronomical_coordinate::CoordinateSystem::ICRS,
41 );
42 let visual_magnitude = magnitude::Magnitude::new(-26.74).unwrap();
43 let astronomical_epoch = epoch::AstronomicalEpoch::j2000();
44 let constellation_abbreviation =
45 constellation::ConstellationAbbreviation::new("Lyr").unwrap();
46 let observation_band = astronomical_observation::ObservationBand::Visible;
47 let designation = catalog_object::CatalogDesignation::new("Messier 31").unwrap();
48
49 assert_eq!(body_kind.to_string(), "star");
50 assert_eq!(spectral_class.to_string(), "g");
51 assert_eq!(planet_kind.to_string(), "terrestrial");
52 assert_eq!(moon_kind.to_string(), "regular");
53 assert_eq!(orbit_kind.to_string(), "heliocentric");
54 assert_eq!(
55 eccentricity.kind(),
56 &orbital_element::OrbitalElementKind::Eccentricity
57 );
58 assert_eq!(
59 coordinate.frame(),
60 &astronomical_coordinate::CoordinateFrame::Equatorial
61 );
62 assert!((visual_magnitude.value() - -26.74).abs() < f64::EPSILON);
63 assert_eq!(astronomical_epoch.label(), "J2000");
64 assert_eq!(constellation_abbreviation.as_str(), "Lyr");
65 assert_eq!(observation_band.to_string(), "visible");
66 assert_eq!(designation.as_str(), "Messier 31");
67 }
68}