use super::helpers::*;
use std::time::Duration;
#[test]
fn select2_activity_wins() {
let history = vec![
started_event(1), activity_scheduled(2, "Task", "input"), timer_created(3, 1000), activity_completed(4, 2, "activity-result"), ];
let mut engine = create_engine(history);
let handler = Select2Handler::new("Task", "input", Duration::from_secs(60));
let result = execute(&mut engine, handler);
assert_completed(&result, "activity:activity-result");
}
#[test]
fn select2_timer_wins() {
let history = vec![
started_event(1), activity_scheduled(2, "Task", "input"), timer_created(3, 1000), timer_fired(4, 3, 1000), ];
let mut engine = create_engine(history);
let handler = Select2Handler::new("Task", "input", Duration::from_secs(60));
let result = execute(&mut engine, handler);
assert_completed(&result, "timeout");
}
#[test]
fn select2_both_pending() {
let history = vec![
started_event(1), activity_scheduled(2, "Task", "input"), timer_created(3, 1000), ];
let mut engine = create_engine(history);
let handler = Select2Handler::new("Task", "input", Duration::from_secs(60));
let result = execute(&mut engine, handler);
assert_continue(&result);
}
#[test]
fn join_all_complete() {
let history = vec![
started_event(1), activity_scheduled(2, "A", "a"), activity_scheduled(3, "B", "b"), activity_completed(4, 2, "result-a"), activity_completed(5, 3, "result-b"), ];
let mut engine = create_engine(history);
let handler = JoinActivitiesHandler::new(vec![("A", "a"), ("B", "b")]);
let result = execute(&mut engine, handler);
assert_completed(&result, "result-a,result-b");
}
#[test]
fn join_partial_complete() {
let history = vec![
started_event(1), activity_scheduled(2, "A", "a"), activity_scheduled(3, "B", "b"), activity_completed(4, 2, "result-a"), ];
let mut engine = create_engine(history);
let handler = JoinActivitiesHandler::new(vec![("A", "a"), ("B", "b")]);
let result = execute(&mut engine, handler);
assert_continue(&result);
}
#[test]
fn join_fresh_schedule() {
let history = vec![started_event(1)]; let mut engine = create_engine(history);
let handler = JoinActivitiesHandler::new(vec![("A", "a"), ("B", "b"), ("C", "c")]);
let result = execute(&mut engine, handler);
assert_continue(&result);
assert_eq!(engine.pending_actions().len(), 3, "Three activities should be pending");
}
#[test]
fn join_one_fails() {
let history = vec![
started_event(1), activity_scheduled(2, "A", "a"), activity_scheduled(3, "B", "b"), activity_completed(4, 2, "result-a"), activity_failed(5, 3, "B failed"), ];
let mut engine = create_engine(history);
let handler = JoinActivitiesHandler::new(vec![("A", "a"), ("B", "b")]);
let result = execute(&mut engine, handler);
assert_failed(&result);
}