pub use mathhook_core as core;
pub use mathhook_core::{Expression, MathSolver, Number, SolverResult, Symbol};
pub use mathhook_core::{MathError, ParseError};
pub mod prelude {
pub use mathhook_core::prelude::*;
pub use num_bigint;
pub use num_rational;
}
#[cfg(test)]
mod tests {
use super::prelude::*;
#[test]
fn test_hybrid_api_integration() {
let expr = Expression::add(vec![Expression::integer(2), Expression::integer(3)]);
let simplified = expr.simplify();
match simplified {
Expression::Number(Number::Integer(5)) => {}
_ => panic!("Expected simplified result to be 5"),
}
}
#[test]
fn test_solver_integration() {
let solver = MathSolver::new();
let x = symbol!(x);
let equation = Expression::equation(Expression::symbol("x"), Expression::integer(42));
let result = solver.solve(&equation, &x);
match result {
SolverResult::Single(_) => {}
_ => panic!("Expected single solution"),
}
}
#[test]
fn test_parser_integration() {
let parser = Parser::new(&ParserConfig::default());
let result = parser.parse("42");
assert!(result.is_ok());
}
#[test]
fn test_memory_optimization_preserved() {
let size = std::mem::size_of::<Expression>();
assert!(
size <= 32,
"Expression size should be ≤ 32 bytes, got {} bytes",
size
);
}
}