From c53258721fa678edd05dd8979bf4a800cff6f7af Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Sat, 17 Feb 2024 18:33:49 +0100 Subject: [PATCH] Test: First failing test finished --- src/main.rs | 65 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6f56b46..1d5a4d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use clap::{Parser, Subcommand}; +use clap::Parser; #[derive(Parser)] #[command(version, about, long_about = None)] @@ -7,21 +7,58 @@ struct Cli { // absense field: String, - // Size of one size of the field. For standard 3x3 input 3 (default) + // Size of one size of the field. For standard 9x9 input 9 (default) #[arg(short, long)] - field_size: u16, + field_size: usize, } +#[derive(PartialEq, Debug)] struct Playfield { - fields: [[Field; 9]; 9], + fields: Vec>, open_fields: Vec, } +#[derive(Clone, PartialEq, Debug)] struct Field { - possible_values: [u8; 9], + possible_values: Vec, value: Option, } +impl Playfield { + fn new(size: usize) -> Playfield { + let fields = vec![ + vec![ + Field { + possible_values: Vec::::new(), + value: None + }; + size + ]; + size + ]; + let open_fields = Vec::::new(); + Self { + fields, + open_fields, + } + } +} + +impl Field { + fn new(value: u8) -> Field { + Self { + possible_values: Vec::::new(), + value: Some(value), + } + } + fn default() -> Field { + Self { + possible_values: Vec::::new(), + value: None, + } + } +} + fn main() { let cli = Cli::parse(); @@ -30,7 +67,9 @@ fn main() { println!("Hello, world!"); } -fn parse_playfield(field: &String, field_size: u16) -> Playfield {} +fn parse_playfield(field: &String, field_size: usize) -> Playfield { + Playfield::new(field_size) +} #[cfg(test)] mod tests { @@ -38,9 +77,21 @@ mod tests { #[test] fn test_parse_field() { - let input = "1 2 3 0 0 0 1 2 3"; + let input = "1 2 3 0 0 0 3 2 1"; let field_size = 2; let playfield = parse_playfield(&input.to_string(), field_size); + + assert_eq!( + playfield, + Playfield { + fields: vec![ + vec![Field::new(1), Field::new(2), Field::new(3)], + vec![Field::default(), Field::default(), Field::default()], + vec![Field::new(3), Field::new(2), Field::new(1)] + ], + open_fields: vec![] + } + ) } }