#![allow(non_snake_case)]
use clarabel::{algebra::*, solver::*};
#[test]
fn test_powcone() {
let n = 6;
let P = CscMatrix::<f64>::zeros((n, n));
let c = vec![0., 0., -1., 0., 0., -1.];
let mut A1 = CscMatrix::<f64>::identity(n);
A1.negate();
let b1 = vec![0.; n];
let cones1 = vec![
GenPowerConeT(vec![0.6, 0.4], 1),
GenPowerConeT(vec![0.1, 0.9], 1),
];
let A2 = CscMatrix::from(&[
[1., 2., 0., 3., 0., 0.], [0., 0., 0., 0., 1., 0.], ]);
let b2 = vec![3., 1.];
let cones2 = vec![ZeroConeT(2)];
let A = CscMatrix::vcat(&A1, &A2).unwrap();
let b = [b1, b2].concat();
let cones = [cones1, cones2].concat();
let settings = DefaultSettings::default();
let mut solver = DefaultSolver::new(&P, &c, &A, &b, &cones, settings).unwrap();
solver.solve();
assert_eq!(solver.solution.status, SolverStatus::Solved);
let refobj = -1.8458;
assert!(f64::abs(solver.info.cost_primal - refobj) <= 1e-3);
}