rubiks-cube-3x3-solver / tests/solver.rs

raw file 935 bytes
use rubiks_cube_3x3_solver::{scramble, solver};

#[test]
fn solve_simple_scramble() {
    let sc = rubiks_cube_3x3_solver::notation::parse_moves("R U R' U'").unwrap();
    let sol = solver::solve_scramble(&sc, 20, 5.0).unwrap();
    // applying solution to scrambled cube should yield solved
    let mut cc = rubiks_cube_3x3_solver::cube::CubieCube::default();
    cc = cc.apply_moves(&sc);
    cc = cc.apply_moves(&sol);
    assert_eq!(cc, rubiks_cube_3x3_solver::cube::CubieCube::default());
}

#[test]
fn scramble_length() {
    let s = scramble::generate(20).unwrap();
    assert_eq!(s.len(), 20);
}

#[test]
fn solve_random_scramble() {
    let sc = scramble::generate(25).unwrap();
    let sol = solver::solve(&sc).unwrap();
    let mut cc = rubiks_cube_3x3_solver::cube::CubieCube::default();
    cc = cc.apply_moves(&sc);
    cc = cc.apply_moves(&sol);
    assert_eq!(cc, rubiks_cube_3x3_solver::cube::CubieCube::default());
}