use super::{Stream, Window, streaming};
fn call(exit_code: Option<i32>) -> Window {
Window {
tool_use: "toolu_01".to_owned(),
tool: Some("box2_Bash".to_owned()),
input: Some("{\"command\":\"uptime\"}".to_owned()),
exit_code,
held: None,
}
}
#[test]
fn the_window_paints_a_row_as_a_call_opens_and_another_when_it_lands() {
let mut fold = Stream {
text: Some("running it".to_owned()),
tools: vec![call(None)],
..Stream::default()
};
let running = streaming(&fold);
assert_eq!(running.len(), 2, "{running:?}");
assert!(running[1].who.contains("box2_Bash"), "{:?}", running[1]);
assert!(running[1].who.contains("toolu_01"), "{:?}", running[1]);
assert_eq!(running[1].said, "{\"command\":\"uptime\"}");
fold.tools = vec![call(Some(0))];
let landed = streaming(&fold);
assert_eq!(landed.len(), 3, "{landed:?}");
assert_eq!(landed[2].said, "exit 0");
assert!(landed[2].who.contains("returned"), "{:?}", landed[2]);
fold.tools = vec![call(Some(2))];
let failed = streaming(&fold);
assert!(failed[2].who.contains("failed"), "{:?}", failed[2]);
assert_eq!(failed[2].said, "exit 2");
}
#[test]
fn a_call_with_no_opening_half_is_named_by_its_invocation() {
let bare = Stream {
tools: vec![Window {
tool_use: "toolu_09".to_owned(),
tool: None,
input: None,
exit_code: Some(1),
held: None,
}],
..Stream::default()
};
let painted = streaming(&bare);
assert_eq!(painted.len(), 2, "{painted:?}");
assert!(painted[0].who.contains("toolu_09"), "{:?}", painted[0]);
assert_eq!(painted[0].said, "");
assert_eq!(streaming(&Stream::default()), Vec::new());
}
#[test]
fn a_parked_call_paints_the_park_and_not_a_dispatch() {
let parked = Stream {
tools: vec![Window {
tool_use: "toolu_02".to_owned(),
tool: Some("box2_service_status".to_owned()),
input: None,
exit_code: None,
held: Some("classified opaque".to_owned()),
}],
..Stream::default()
};
let painted = streaming(&parked);
assert_eq!(painted.len(), 1, "{painted:?}");
assert!(painted[0].who.contains("held"), "{:?}", painted[0]);
assert!(
painted[0].who.contains("box2_service_status"),
"{:?}",
painted[0]
);
assert_eq!(painted[0].said, "classified opaque");
}
#[test]
fn an_answered_park_keeps_its_row_and_gains_the_two_it_was_waiting_for() {
let released = Stream {
tools: vec![Window {
held: Some("classified opaque".to_owned()),
..call(Some(0))
}],
..Stream::default()
};
let painted = streaming(&released);
assert_eq!(painted.len(), 3, "{painted:?}");
assert!(painted[0].who.contains("held"), "{:?}", painted[0]);
assert_eq!(painted[1].said, "{\"command\":\"uptime\"}");
assert!(painted[2].who.contains("returned"), "{:?}", painted[2]);
}