From 7dea9d0eb56d94ba067d07d44775c915471a64ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoffer=20T=C3=B8nnessen?= Date: Tue, 6 Oct 2015 12:08:15 +0200 Subject: [PATCH 1/2] Move week number parsing to separate function This is done to easier implement tests. --- src/main.rs | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/main.rs b/src/main.rs index c7a0327..397c703 100644 --- a/src/main.rs +++ b/src/main.rs @@ -53,6 +53,30 @@ fn show_week_period_for_week_number(w: usize, year: i32) { ); } +fn get_week_number() -> isize { + let client = Client::new(); + + let mut res = client + .get(WEEKDAY_WEBSITE) + .header(Connection::close()) + .send() + .unwrap_or_else(|why| { + panic!("Error fetching week number, make sure you have an internet connection"); + }); + + let mut body = String::new(); + res.read_to_string(&mut body).unwrap(); + + let body_index = body.find("\n").unwrap() + "\n".len(); + let break_index = body.find("
").unwrap(); + let week_number = &body[body_index..break_index]; + + return match week_number.parse::() { + Ok(num) => num, + _ => -1, + }; +} + fn main() { let year = Local::now().year(); @@ -69,23 +93,6 @@ fn main() { print_help(); } else { - let client = Client::new(); - - let mut res = client - .get(WEEKDAY_WEBSITE) - .header(Connection::close()) - .send() - .unwrap_or_else(|why| { - panic!("Error fetching week number, make sure you have an internet connection"); - }); - - let mut body = String::new(); - res.read_to_string(&mut body).unwrap(); - - let body_index = body.find("\n").unwrap() + "\n".len(); - let break_index = body.find("
").unwrap(); - - let week_number = &body[body_index..break_index]; - println!("{}", week_number); + println!("{}", get_week_number()); } } From 0fd436f7cd7dcd21601c61b50e9859bb2afdfdfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoffer=20T=C3=B8nnessen?= Date: Tue, 6 Oct 2015 12:08:47 +0200 Subject: [PATCH 2/2] Add simple test The first test assures that our week number is between 1 and 53. --- src/main.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main.rs b/src/main.rs index 397c703..d1fdbbb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -96,3 +96,12 @@ fn main() { println!("{}", get_week_number()); } } + +#[test] +fn week_number_should_be_between_1_and_53() { + if let 1...53 = get_week_number() { + assert!(true, "Week number is between 1 and 53"); + } else { + assert!(false, "Week number is not between 1 and 53"); + } +}