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); }