use kryst::context::{KspContext, PcType, PcFactory};
use kryst::context::ksp_context::SolverType;
use faer::Mat;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut ksp = KspContext::new();
ksp.set_type(SolverType::Cg)?;
ksp.set_pc_type(PcType::Jacobi)?;
let pc = PcFactory::create_preconditioner(PcType::Ilu0, None)?;
println!("Created preconditioner successfully");
let deferred = PcFactory::create_deferred_pc(PcType::Chebyshev, None)?;
println!("Created deferred PC info successfully");
let matrix = Mat::<f64>::identity(3, 3);
let constructed_pc = PcFactory::construct_deferred_preconditioner(deferred, &matrix)?;
println!("Constructed deferred preconditioner successfully");
println!("All API tests passed - cleanup was successful!");
Ok(())
}