yao 0.1.4

a fast, tiny, extensiable workflow engine
Documentation
use crate::{
    sch::{Proc, Scheduler},
    TaskState, Workflow,
};
use std::sync::Arc;

#[tokio::test]
async fn sch_next() {
    let scher = Scheduler::new();
    let text = include_str!("./simple.yml");
    let workflow = Workflow::from_str(text).unwrap();

    let s = scher.clone();
    tokio::spawn(async move {
        s.push(&workflow);
    });

    let ret = scher.next().await;
    assert_eq!(ret, true);
}

#[tokio::test]
async fn sch_schedule_task() {
    let scher = Arc::new(Scheduler::new());

    let text = include_str!("./simple.yml");
    let workflow = Workflow::from_str(text).unwrap();

    let s = scher.clone();
    tokio::spawn(async move {
        let proc = Proc::new(s.clone(), &workflow, &TaskState::Pending);
        s.sched_proc(&proc)
    });

    let ret = scher.next().await;
    assert_eq!(ret, true);
}