#[cfg(test)]
mod tests {
use crate::checkpoints::{ParsedRewindTarget, parse_rewind_target};
#[test]
fn rewind_command_accepts_three_modes_and_rejects_unknown_modes() {
for (name, mode) in [
("conversation", crate::checkpoints::RewindMode::Conversation),
("files", crate::checkpoints::RewindMode::Files),
("both", crate::checkpoints::RewindMode::Both),
] {
assert_eq!(
parse_rewind_target(Some(&format!("--to 2 --mode {name} --dry-run"))).unwrap(),
ParsedRewindTarget::Target {
target_turn: 2,
dry_run: true,
mode
}
);
}
assert!(parse_rewind_target(Some("--to 2 --mode unknown")).is_err());
assert!(parse_rewind_target(Some("--to 2 --mode")).is_err());
}
#[test]
fn parse_rewind_target_matrix() {
assert_eq!(
parse_rewind_target(None).unwrap(),
ParsedRewindTarget::NeedsSelection
);
assert_eq!(
parse_rewind_target(Some("3")).unwrap(),
ParsedRewindTarget::Target {
target_turn: 3,
dry_run: false,
mode: crate::checkpoints::RewindMode::Conversation,
}
);
assert_eq!(
parse_rewind_target(Some("--to 3 --dry-run")).unwrap(),
ParsedRewindTarget::Target {
target_turn: 3,
dry_run: true,
mode: crate::checkpoints::RewindMode::Conversation,
}
);
assert!(parse_rewind_target(Some("0")).is_err());
assert!(parse_rewind_target(Some("-1")).is_err());
assert!(parse_rewind_target(Some("1..2")).is_err());
assert!(parse_rewind_target(Some("--to")).is_err());
assert!(parse_rewind_target(Some("1 2")).is_err());
}
}