mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-14 06:43:25 +08:00
diagram-v2 spec: added tests for labels, composite; fix typos,
This commit is contained in:
parent
79f4eb2e32
commit
3c0727c744
@ -1,10 +1,13 @@
|
|||||||
import { parser } from './parser/stateDiagram';
|
import { parser } from './parser/stateDiagram';
|
||||||
import stateDb from './stateDb';
|
import stateDb from './stateDb';
|
||||||
|
import stateDiagram from './parser/stateDiagram.jison';
|
||||||
|
|
||||||
describe('state diagram, ', function () {
|
describe('state diagram, ', function () {
|
||||||
describe('when parsing an info graph it', function () {
|
describe('when parsing an info graph it', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
parser.yy = stateDb;
|
parser.yy = stateDb;
|
||||||
|
stateDiagram.parser.yy = stateDb;
|
||||||
|
stateDiagram.parser.yy.clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('super simple', function () {
|
it('super simple', function () {
|
||||||
@ -121,6 +124,30 @@ describe('state diagram, ', function () {
|
|||||||
parser.parse(str);
|
parser.parse(str);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('relationship labels', () => {
|
||||||
|
it('simple states with : labels', () => {
|
||||||
|
const diagram = `
|
||||||
|
stateDiagram-v2
|
||||||
|
[*] --> State1
|
||||||
|
State1 --> State2 : Transition 1
|
||||||
|
State1 --> State3 : Transition 2
|
||||||
|
State1 --> State4 : Transition 3
|
||||||
|
State1 --> [*]
|
||||||
|
`;
|
||||||
|
|
||||||
|
stateDiagram.parser.parse(diagram);
|
||||||
|
stateDiagram.parser.yy.extract(stateDiagram.parser.yy.getRootDocV2());
|
||||||
|
|
||||||
|
const rels = stateDb.getRelations();
|
||||||
|
const rel_1_2 = rels.find((rel) => rel.id1 === 'State1' && rel.id2 === 'State2');
|
||||||
|
expect(rel_1_2.relationTitle).toEqual('Transition 1');
|
||||||
|
const rel_1_3 = rels.find((rel) => rel.id1 === 'State1' && rel.id2 === 'State3');
|
||||||
|
expect(rel_1_3.relationTitle).toEqual('Transition 2');
|
||||||
|
const rel_1_4 = rels.find((rel) => rel.id1 === 'State1' && rel.id2 === 'State4');
|
||||||
|
expect(rel_1_4.relationTitle).toEqual('Transition 3');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('scale', function () {
|
it('scale', function () {
|
||||||
const str = `stateDiagram-v2\n
|
const str = `stateDiagram-v2\n
|
||||||
scale 350 width
|
scale 350 width
|
||||||
@ -355,7 +382,7 @@ describe('state diagram, ', function () {
|
|||||||
|
|
||||||
parser.parse(str);
|
parser.parse(str);
|
||||||
});
|
});
|
||||||
it('should handle notes for composit states', function () {
|
it('should handle notes for composite (nested) states', function () {
|
||||||
const str = `stateDiagram-v2\n
|
const str = `stateDiagram-v2\n
|
||||||
[*] --> NotShooting
|
[*] --> NotShooting
|
||||||
|
|
||||||
@ -372,5 +399,28 @@ describe('state diagram, ', function () {
|
|||||||
|
|
||||||
parser.parse(str);
|
parser.parse(str);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('A composite state should be able to link to itself', () => {
|
||||||
|
const diagram = `
|
||||||
|
stateDiagram-v2
|
||||||
|
state Active {
|
||||||
|
Idle
|
||||||
|
}
|
||||||
|
Inactive --> Idle: ACT
|
||||||
|
Active --> Active: LOG
|
||||||
|
`;
|
||||||
|
|
||||||
|
stateDiagram.parser.parse(diagram);
|
||||||
|
stateDiagram.parser.yy.extract(stateDiagram.parser.yy.getRootDocV2());
|
||||||
|
|
||||||
|
const states = stateDb.getStates();
|
||||||
|
expect(states['Active'].doc[0].id).toEqual('Idle');
|
||||||
|
|
||||||
|
const rels = stateDb.getRelations();
|
||||||
|
const rel_Inactive_Idle = rels.find((rel) => rel.id1 === 'Inactive' && rel.id2 === 'Idle');
|
||||||
|
expect(rel_Inactive_Idle.relationTitle).toEqual('ACT');
|
||||||
|
const rel_Active_Active = rels.find((rel) => rel.id1 === 'Active' && rel.id2 === 'Active');
|
||||||
|
expect(rel_Active_Active.relationTitle).toEqual('LOG');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user