use loop_lib::args::LoopOptions;
#[test]
fn test_loop_options_creation() {
let options = LoopOptions {
command: vec!["echo".to_string(), "test".to_string()],
cwd: Some("/home/user".to_string()),
include: Some(vec!["dir1".to_string(), "dir2".to_string()]),
exclude: Some(vec!["dir3".to_string()]),
include_only: None,
exclude_only: None,
include_pattern: Some("*.rs".to_string()),
exclude_pattern: Some("*.tmp".to_string()),
init: false,
};
assert_eq!(options.command, vec!["echo", "test"]);
assert_eq!(options.cwd, Some("/home/user".to_string()));
assert_eq!(
options.include,
Some(vec!["dir1".to_string(), "dir2".to_string()])
);
assert_eq!(options.exclude, Some(vec!["dir3".to_string()]));
assert_eq!(options.include_pattern, Some("*.rs".to_string()));
assert_eq!(options.exclude_pattern, Some("*.tmp".to_string()));
assert!(!options.init);
}
#[test]
fn test_loop_options_mixed() {
let options = LoopOptions {
command: vec!["npm".to_string(), "run".to_string(), "test".to_string()],
cwd: Some(".".to_string()),
include: Some(vec!["src".to_string()]),
exclude: None,
include_only: None,
exclude_only: Some(vec!["node_modules".to_string()]),
include_pattern: Some("*.js".to_string()),
exclude_pattern: None,
init: true,
};
assert_eq!(options.command, vec!["npm", "run", "test"]);
assert_eq!(options.cwd, Some(".".to_string()));
assert_eq!(options.include, Some(vec!["src".to_string()]));
assert!(options.exclude.is_none());
assert!(options.include_only.is_none());
assert_eq!(options.exclude_only, Some(vec!["node_modules".to_string()]));
assert_eq!(options.include_pattern, Some("*.js".to_string()));
assert!(options.exclude_pattern.is_none());
assert!(options.init);
}
#[test]
fn test_loop_options_empty_command() {
let options = LoopOptions {
command: vec![],
cwd: None,
include: None,
exclude: None,
include_only: None,
exclude_only: None,
include_pattern: None,
exclude_pattern: None,
init: false,
};
assert!(options.command.is_empty());
assert!(options.cwd.is_none());
assert!(options.include.is_none());
assert!(options.exclude.is_none());
assert!(options.include_only.is_none());
assert!(options.exclude_only.is_none());
assert!(options.include_pattern.is_none());
assert!(options.exclude_pattern.is_none());
assert!(!options.init);
}
#[test]
fn test_loop_options_only_patterns() {
let options = LoopOptions {
command: vec!["grep".to_string(), "-r".to_string(), "TODO".to_string()],
cwd: None,
include: None,
exclude: None,
include_only: None,
exclude_only: None,
include_pattern: Some("*.{rs,toml}".to_string()),
exclude_pattern: Some("**/target/**".to_string()),
init: false,
};
assert_eq!(options.command, vec!["grep", "-r", "TODO"]);
assert!(options.cwd.is_none());
assert!(options.include.is_none());
assert!(options.exclude.is_none());
assert!(options.include_only.is_none());
assert!(options.exclude_only.is_none());
assert_eq!(options.include_pattern, Some("*.{rs,toml}".to_string()));
assert_eq!(options.exclude_pattern, Some("**/target/**".to_string()));
assert!(!options.init);
}