solverforge-scoring 0.14.1

Incremental constraint scoring for SolverForge
Documentation
use super::*;

#[test]
fn test_queen_creation() {
    let q1 = Queen::assigned(1, 1, 2);
    assert_eq!(q1.id, 1);
    assert_eq!(q1.column, 1);
    assert_eq!(q1.row, Some(2));

    let q2 = Queen::unassigned(2, 2);
    assert_eq!(q2.row, None);
}

#[test]
fn test_nqueens_solution_creation() {
    let solution = NQueensSolution::new(vec![Queen::assigned(0, 0, 0)]);
    assert_eq!(solution.queens.len(), 1);
    assert!(solution.score.is_none());
}

#[test]
fn test_get_set_queen_row() {
    let mut solution = NQueensSolution::new(vec![Queen::unassigned(0, 0)]);
    assert_eq!(get_queen_row(&solution, 0, 0), None);

    set_queen_row(&mut solution, 0, 0, Some(5));
    assert_eq!(get_queen_row(&solution, 0, 0), Some(5));
}

#[test]
fn test_shadow_solution_creation() {
    let s1 = ShadowSolution::new(vec![1, 2, 3]);
    assert_eq!(s1.values, vec![1, 2, 3]);
    assert_eq!(s1.cached_sum, 0);
    assert!(s1.score.is_none());

    let s2 = ShadowSolution::with_cached_sum(vec![1, 2, 3], 6);
    assert_eq!(s2.cached_sum, 6);
}

#[test]
fn test_shadow_default() {
    let s = ShadowSolution::default();
    assert!(s.values.is_empty());
    assert_eq!(s.cached_sum, 0);
}