#[cfg(test)] mod memoryless { use crate::factories::inv_e; use crate::init; use soco::algorithms::online::uni_dimensional::memoryless::memoryless; use soco::config::Config; use soco::convert::DiscretizableSchedule; use soco::problem::{Online, SimplifiedSmoothedConvexOptimization}; use soco::schedule::Schedule; #[test] fn _1() { init(); let p = SimplifiedSmoothedConvexOptimization { d: 1, t_end: 1, bounds: vec![2.], switching_cost: vec![1.], hitting_cost: inv_e(), }; let mut o = Online { p, w: 0 }; o.verify().unwrap(); let result = o.stream(&memoryless, |_, _| false, ()).unwrap(); result.0.verify(o.p.t_end, &o.p.bounds).unwrap(); assert_eq!(result.0.to_i(), Schedule::new(vec![Config::single(1)])); } #[test] fn _2() { init(); let p = SimplifiedSmoothedConvexOptimization { d: 1, t_end: 1, bounds: vec![2.], switching_cost: vec![1.], hitting_cost: inv_e(), }; let mut o = Online { p, w: 0 }; o.verify().unwrap(); let t_end = 2; let result = o.offline_stream(&memoryless, t_end, ()).unwrap(); result.0.verify(t_end, &o.p.bounds).unwrap(); assert_eq!( result.0.to_i(), Schedule::new(vec![Config::single(1), Config::single(1)]) ); } }