#![cfg(not(feature = "lock"))]
#[macro_use]
extern crate approx;
#[macro_use]
extern crate serial_test;
#[path = "../common/mod.rs"]
mod common;
mod against_c;
mod assorted;
mod bodies;
mod cells;
mod ck;
mod constants;
mod coords;
mod dsk;
mod ek;
mod errors;
mod files;
mod frames;
mod geometry;
mod gf;
mod interpolation;
mod kernels;
mod orbits;
mod planes;
mod pool;
mod rotations;
mod spk;
mod strings;
mod time;
mod tle;
mod units;
mod vectors;
#[track_caller]
pub fn assert_slice_eq(left: &[f64], right: &[f64], epsilon: f64) {
assert_eq!(left.len(), right.len(), "lengths differ");
for (index, (left, right)) in left.iter().zip(right).enumerate() {
assert_relative_eq!(left, right, epsilon = epsilon);
let _ = index;
}
}
#[track_caller]
pub fn assert_matrix_eq(left: &[[f64; 3]; 3], right: &[[f64; 3]; 3], epsilon: f64) {
for (left, right) in left.iter().zip(right) {
assert_slice_eq(left, right, epsilon);
}
}
pub fn cs(value: &str) -> std::ffi::CString {
std::ffi::CString::new(value).unwrap()
}
#[macro_export]
macro_rules! cptr {
($value:expr) => {
$value.as_ptr() as *mut spice::c::SpiceChar
};
}