diff --git a/Cargo.toml b/Cargo.toml index 77c4305..29b0132 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,8 +11,10 @@ license = "MIT OR Apache-2.0" keywords = ["Queens", "puzzle", "solver"] categories = ["command-line-utilities"] exclude = [ + "benches/*", "media/*", "games/*", + "tests/*", ] [badges] diff --git a/README.md b/README.md index 9f58d91..c515542 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ https://github.com/user-attachments/assets/6b4d6798-63be-4000-b850-c8a45008dd1d Basic usage of the library looks something like this: ```rust -use std::path::PathBuf; +use std::str::FromStr; use qsolve::heuristic::all_heuristics; use qsolve::file::QueensFile; use qsolve::solveiter::solve_iter; @@ -63,7 +63,7 @@ use qsolve::solvestate::{SolveState, SolveStrategy}; fn solve() -> Result<(), Box> { // Parse a text file containing a Queens puzzle. - let queens_file = QueensFile::try_from_text_file(&PathBuf::from("games/linkedin-1-empty.txt"))?; + let queens_file = QueensFile::from_str("wwww\nwkkk\nrrrr\nbbbb")?; // Generate the initial solve state and print it. let solve_state = SolveState::from(&queens_file); diff --git a/src/lib.rs b/src/lib.rs index 1e7ecd4..7fb6893 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,7 +16,7 @@ //! Basic usage of the library looks something like this: //! //! ``` -//! # use std::path::PathBuf; +//! # use std::str::FromStr; //! # use qsolve::file::QueensFile; //! # use qsolve::heuristic::all_heuristics; //! # use qsolve::solveiter::solve_iter; @@ -24,7 +24,7 @@ //! # use anyhow::Result; //! # fn main() -> Result<()> { //! // Parse a text file containing a Queens puzzle. -//! let queens_file = QueensFile::try_from_text_file(&PathBuf::from("games/linkedin-1-empty.txt"))?; +//! let queens_file = QueensFile::from_str("wwww\nwkkk\nrrrr\nbbbb")?; //! //! // Generate the initial solve state and print it. //! let solve_state = SolveState::from(&queens_file); diff --git a/src/share.rs b/src/share.rs index 67544a3..2928392 100644 --- a/src/share.rs +++ b/src/share.rs @@ -14,7 +14,7 @@ use crate::{heuristic::Changes, solveiter::SolveIterItem}; /// /// # Examples /// ``` -/// # use std::path::PathBuf; +/// # use std::str::FromStr; /// # use std::time::Instant; /// # use qsolve::heuristic::all_heuristics; /// # use qsolve::file::QueensFile; @@ -24,7 +24,7 @@ use crate::{heuristic::Changes, solveiter::SolveIterItem}; /// # fn solve() -> Result<(), Box> { /// // Solve a puzzle, while timing it. /// let start_time = Instant::now(); -/// let queens_file = QueensFile::try_from_text_file(&PathBuf::from("games/linkedin-1-empty.txt"))?; +/// let queens_file = QueensFile::from_str("wwww\nwkkk\nrrrr\nbbbb")?; /// let solve_state = SolveState::from(&queens_file); /// let heuristics = all_heuristics(solve_state.board); /// let solve_vec = solve_iter(solve_state, SolveStrategy::Fast, &heuristics).collect::>(); @@ -82,7 +82,7 @@ pub fn generate_share_content( #[cfg(test)] mod tests { - use std::path::PathBuf; + use std::str::FromStr; use anyhow::Result; @@ -95,10 +95,11 @@ mod tests { use super::*; + const PUZZLE: &str = "wwww\nwkkk\nrrrr\nbbbb"; + #[test] fn generate_share_content_works() -> Result<()> { - let queens_file = - QueensFile::try_from_text_file(&PathBuf::from("games/linkedin-1-empty.txt"))?; + let queens_file = QueensFile::from_str(PUZZLE)?; let solve_state = SolveState::from(&queens_file); let heuristics = all_heuristics(solve_state.board); let state_iter_items = @@ -111,7 +112,7 @@ mod tests { assert_eq!(share_lines[0], "QSolve LinkedIn #1 | 1s and flawless"); assert_eq!( share_lines[1], - "First \u{1f451}s: \u{1F7E8} \u{2B1C} \u{1F7EA}" + "First \u{1f451}s: \u{1F7E5} \u{2B1C} \u{2B1B}" ); assert_eq!(share_lines[2], "github.com/dschafer/qsolve"); @@ -120,8 +121,7 @@ mod tests { #[test] fn generate_share_content_puzzle_number() -> Result<()> { - let queens_file = - QueensFile::try_from_text_file(&PathBuf::from("games/linkedin-1-empty.txt"))?; + let queens_file = QueensFile::from_str(PUZZLE)?; let solve_state = SolveState::from(&queens_file); let heuristics = all_heuristics(solve_state.board); let state_iter_items =