node-state-machine
Version:
State machine for NodeJS.
48 lines (41 loc) • 1.73 kB
JavaScript
import chai from 'chai';
import { Transition } from '../dist/model/Transition';
import { Transitions } from '../dist/model/Transitions';
let expect = chai.expect;
describe('Transitions Tests', () => {
it('should have no transitions', () => {
let transitions = new Transitions();
expect(transitions.totalTransitions()).to.equal(0);
});
it('should have multiple transitions', () => {
let t1 = new Transition(v => v == 'a', 'A');
let t2 = new Transition(v => v == 'b', 'B');
let t3 = new Transition(v => v == 'b', 'C');
let transitions = new Transitions();
expect(transitions.totalTransitions()).to.equal(0);
transitions.add(t1);
transitions.add(t2);
transitions.add(t3);
expect(transitions.totalTransitions()).to.equal(3);
transitions.default('D');
expect(transitions.totalTransitions()).to.equal(4);
expect(() => { transitions.find('b'); }).to.throw('Multiple transitions found!');
});
it('should have return correct destination', () => {
let t1 = new Transition(v => v == 'a', 'A');
let t2 = new Transition(v => v == 'b', 'B');
let t3 = new Transition(v => v == 'c', 'C');
let transitions = new Transitions();
expect(transitions.totalTransitions()).to.equal(0);
transitions.add(t1);
transitions.add(t2);
transitions.add(t3);
expect(transitions.totalTransitions()).to.equal(3);
transitions.default('D');
expect(transitions.totalTransitions()).to.equal(4);
expect(transitions.find('a').destination()).to.equal('A');
expect(transitions.find('b').destination()).to.equal('B');
expect(transitions.find('c').destination()).to.equal('C');
expect(transitions.find('d').destination()).to.equal('D');
});
});