use super::getopt;
use std::collections::HashMap;
#[test]
fn for_loop_can_consume_getopt_struct() {
let getopt_for_consumption = getopt {
arguments: vec!["a".to_string(), "b".to_string()],
options : HashMap::new(),
option_has_arg: HashMap::new()
};
for arg in getopt_for_consumption {
println!("Zkonzumovany argument: {}", arg);
}
}
#[test]
fn for_loop_wont_consume_immutable_ref() {
let my_getopt = getopt {
arguments: vec![
"param1".to_string(),
"file.txt".to_string(),
"verbose".to_string(),
],
options : HashMap::new(),
option_has_arg: HashMap::new()
};
for arg in &my_getopt {
println!("immutable ref: {}", arg);
}
for arg2 in &my_getopt {
println!("immutable ref: {}", arg2);
}
assert_eq!(my_getopt.arguments.len(), 3);
assert_eq!(my_getopt.len(), 3);
}
#[test]
fn check_if_into_iter_returns_expected_values() {
let my_getopt = getopt {
arguments: vec![
"param1".to_string(),
"file.txt".to_string(),
"verbose".to_string(),
],
options : HashMap::new(),
option_has_arg: HashMap::new()
};
let cloned_args = my_getopt.arguments.clone();
let mut expected = cloned_args.into_iter();
let mut iterator = my_getopt.into_iter();
loop {
let next_item = iterator.next();
let next_expected_item = expected.next();
assert_eq!(next_item, next_expected_item, "Iterator returned unexpected value.");
if next_item.is_none() {
break;
}
}
}
#[test]
fn check_if_iter_returns_expected_values() {
let my_getopt = getopt {
arguments: vec![
"param1".to_string(),
"file.txt".to_string(),
"verbose".to_string(),
],
options : HashMap::new(),
option_has_arg: HashMap::new()
};
let cloned_args = my_getopt.arguments.clone();
let mut expected = cloned_args.iter();
let mut iterator = my_getopt.iter();
loop {
let next_item = iterator.next();
let next_expected_item = expected.next();
assert_eq!(next_item, next_expected_item, "Iterator returned unexpected value.");
if next_item.is_none() {
break;
}
}
}