decision
Version:
Decision System Based on Event System and Alleyway Grammer
91 lines (84 loc) • 2.52 kB
JavaScript
import Decision from "../index";
import assert from "assert";
describe("base", () => {
it("base", (done) => {
let decision = new Decision();
decision.loadActions({
"add": (a, b) => a + b,
"print": v => {
assert.equal(v, 7);
done();
}
});
decision.loadDecisions(m => {
m().when("system::init").data(res => {
assert.equal(res, 5);
return [
3, 4
]
}).then("add | print");
});
decision.marmoset.trigger("system", "init", 5);
})
it("actionDone", (done) => {
let decision = new Decision();
decision.loadActions({
"add": (a, b) => a + b,
"print": v => v,
"check": v => {
assert.equal(v, 7);
done();
}
});
decision.loadDecisions(m => {
m().when("system::init").data(res => {
return [
3, 4
]
}).then("add | print");
m().when("system::actionDone>print").then("check")
});
decision.marmoset.trigger("system", "init");
})
it("decisionEnd", (done) => {
let counter = 0;
let decision = new Decision();
decision.loadActions({
"add": (a, b) => a + b,
"print": v => v
});
decision.loadDecisions(m => {
m().when("system::init").data(res => {
return [
3, 4
]
}).then("add | print").named("first");
});
decision.marmoset.on("system", "decisionEnd", () => {
counter++;
assert.equal(counter, 1);
done();
});
decision.marmoset.trigger("system", "init");
})
it("named", (done) => {
let decision = new Decision();
decision.loadActions({
"add": (a, b) => a + b,
"print": v => v,
"check": v => {
assert.equal(v, 7);
done();
}
});
decision.loadDecisions(m => {
m().when("system::init").data(res => {
return [
3, 4
]
}).then("add | print").named("first");
m().when("system::decisionEnd>first").then("check")
});
decision.marmoset.trigger("system", "init");
})
});