use rubiks_cube_3x3_solver::cube::{CubieCube, FaceCube};
use rubiks_cube_3x3_solver::moves::Move;
use rubiks_cube_3x3_solver::notation;
#[test]
fn solved_cube_is_solvable() {
let cc = CubieCube::default();
assert!(cc.is_solvable());
}
#[test]
fn move_round_trip() {
let cc = CubieCube::default();
let m = Move::U;
let cc2 = cc.apply_move(m);
let cc3 = cc2.apply_move(m.get_inverse());
assert_eq!(cc, cc3);
}
#[test]
fn parse_and_format_moves() {
let s = "R U R' U'";
let moves = notation::parse_moves(s).unwrap();
assert_eq!(moves.len(), 4);
let out = notation::format_moves(&moves);
assert_eq!(out, s);
}
#[test]
fn facelet_round_trip() {
let cc = CubieCube::default();
let fc = FaceCube::try_from(&cc).unwrap();
let s = fc.to_string();
assert_eq!(s, "UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB");
let fc2 = FaceCube::try_from(s.as_str()).unwrap();
let cc2 = CubieCube::try_from(&fc2).unwrap();
assert_eq!(cc, cc2);
}