Skip to main content

jagua_rs/probs/spp/util/
assertions.rs

1use crate::entities::Item;
2use crate::probs::spp::entities::{SPProblem, SPSolution};
3use crate::util::assertions::snapshot_matches_layout;
4use std::sync::Arc;
5
6#[must_use]
7pub fn problem_matches_solution(spp: &SPProblem, sol: &SPSolution) -> bool {
8    let SPSolution {
9        strip,
10        layout_snapshot,
11        time_stamp: _,
12    } = sol;
13
14    assert_eq!(*strip, spp.strip);
15    assert!((spp.density() - sol.density()).abs() <= f32::EPSILON);
16    assert!(snapshot_matches_layout(&spp.layout, layout_snapshot));
17
18    true
19}
20
21#[must_use]
22pub fn instance_item_indices_correct(items: &[(Arc<Item>, usize)]) -> bool {
23    items
24        .iter()
25        .enumerate()
26        .all(|(i, (item, _qty))| item.idx == i)
27}