use super::Q;
use crate::macros::unsafe_passthrough::{unsafe_getter, unsafe_setter};
use flint_sys::fmpq::{fmpq, fmpq_clear};
unsafe_getter!(Q, value, fmpq);
unsafe_setter!(Q, value, fmpq, fmpq_clear);
#[cfg(test)]
mod test_get_fmpq {
use super::Q;
use flint_sys::fmpz::fmpz;
#[test]
#[allow(unused_mut)]
fn availability_and_modification() {
let mut rational = Q::from(1);
let mut fmpq_rat = unsafe { rational.get_fmpq() };
fmpq_rat.num = fmpz(2);
assert_eq!(Q::from(2), rational);
}
}
#[cfg(test)]
mod test_set_fmpq {
use super::Q;
use flint_sys::{fmpq::fmpq, fmpz::fmpz};
#[test]
#[allow(unused_mut)]
fn availability_and_modification() {
let mut rational = Q::from(1);
let flint_struct = fmpq {
num: fmpz(2),
den: fmpz(1),
};
unsafe { rational.set_fmpq(flint_struct) };
assert_eq!(Q::from(2), rational);
}
}