pub const FRAMES: [&str; 10] = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
pub fn frame_char(index: usize) -> &'static str {
FRAMES[index % FRAMES.len()]
}
pub fn format_line(index: usize, verb: &str, elapsed_secs: f64) -> String {
format!("{} {} {:.1}s", frame_char(index), verb, elapsed_secs)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn spinner_frame_advances_with_index() {
assert_eq!(frame_char(0), "⠋");
assert_eq!(frame_char(1), "⠙");
assert_eq!(frame_char(9), "⠏");
assert_eq!(frame_char(10), "⠋");
assert_eq!(frame_char(20), "⠋");
}
#[test]
fn format_line_includes_verb_and_elapsed() {
let line = format_line(0, "Thinking", 2.34);
assert!(line.contains("Thinking"));
assert!(line.contains("2.3s"));
assert!(line.starts_with('⠋'));
}
}