mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-10 09:39:38 +02:00
Support for different arrow types in sequence diagrams: no arrow head, cross head and regular arrow head.
This commit is contained in:
@@ -19,13 +19,13 @@ describe('when parsing a sequenceDiagram',function() {
|
||||
|
||||
it('it should handle a sequenceDiagram defintion', function () {
|
||||
str = 'sequenceDiagram\n' +
|
||||
'Alice->Bob: Hello Bob, how are you?\n' +
|
||||
'Alice->Bob:Hello Bob, how are you?\n' +
|
||||
'Note right of Bob: Bob thinks\n' +
|
||||
'Bob-->Alice: I am good thanks!\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice).ToBdescription = 'Alice';
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
@@ -35,16 +35,101 @@ describe('when parsing a sequenceDiagram',function() {
|
||||
expect(messages[0].from).toBe('Alice');
|
||||
expect(messages[2].from).toBe('Bob');
|
||||
});
|
||||
it('it should space in actor names', function () {
|
||||
str = 'sequenceDiagram\n' +
|
||||
'Alice->Bob:Hello Bob, how are - you?\n' +
|
||||
'Bob-->Alice: I am good thanks!\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(2);
|
||||
|
||||
expect(messages[0].from).toBe('Alice');
|
||||
expect(messages[1].from).toBe('Bob');
|
||||
});
|
||||
it('it should handle in async messages', function () {
|
||||
var str = 'sequenceDiagram\n' +
|
||||
'Alice-xBob:Hello Bob, how are you?\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
//console.log(actors);
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
expect(actors.Bob.description).toBe('Bob');
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
|
||||
|
||||
expect(messages.length).toBe(1);
|
||||
|
||||
expect(messages[0].type).toBe(sq.yy.LINETYPE.SOLID_CROSS);
|
||||
});
|
||||
it('it should handle in async dotted messages', function () {
|
||||
var str = 'sequenceDiagram\n' +
|
||||
'Alice--xBob:Hello Bob, how are you?\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
//console.log(actors);
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
expect(actors.Bob.description).toBe('Bob');
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
|
||||
|
||||
expect(messages.length).toBe(1);
|
||||
|
||||
expect(messages[0].type).toBe(sq.yy.LINETYPE.DOTTED_CROSS);
|
||||
});
|
||||
it('it should handle in arrow messages', function () {
|
||||
var str = 'sequenceDiagram\n' +
|
||||
'Alice->>Bob:Hello Bob, how are you?\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
expect(actors.Bob.description).toBe('Bob');
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
//console.log(messages);
|
||||
|
||||
|
||||
expect(messages.length).toBe(1);
|
||||
|
||||
expect(messages[0].type).toBe(sq.yy.LINETYPE.SOLID);
|
||||
});
|
||||
it('it should handle in arrow messages', function () {
|
||||
var str = 'sequenceDiagram\n' +
|
||||
'Alice-->>Bob:Hello Bob, how are you?\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
expect(actors.Bob.description).toBe('Bob');
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
//console.log(messages);
|
||||
|
||||
|
||||
expect(messages.length).toBe(1);
|
||||
|
||||
expect(messages[0].type).toBe(sq.yy.LINETYPE.DOTTED);
|
||||
});
|
||||
it('it should handle comments in a sequenceDiagram', function () {
|
||||
str = 'sequenceDiagram\n' +
|
||||
'Alice->Bob: Hello Bob, how are you?\n' +
|
||||
'Alice->Bob: Hello Bob, how are you?\n'+
|
||||
'%% Comment\n' +
|
||||
'Note right of Bob: Bob thinks\n' +
|
||||
'Bob-->Alice: I am good thanks!\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice).ToBdescription = 'Alice';
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
@@ -64,7 +149,7 @@ describe('when parsing a sequenceDiagram',function() {
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice).ToBdescription = 'Alice';
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
@@ -75,6 +160,70 @@ describe('when parsing a sequenceDiagram',function() {
|
||||
expect(messages[2].from).toBe('Bob');
|
||||
});
|
||||
|
||||
it('it should handle one leading space in lines in a sequenceDiagram', function () {
|
||||
str = 'sequenceDiagram\n' +
|
||||
' Alice->Bob: Hello Bob, how are you?\n\n' +
|
||||
'%% Comment\n' +
|
||||
'Note right of Bob: Bob thinks\n' +
|
||||
'Bob-->Alice: I am good thanks!\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(3);
|
||||
|
||||
expect(messages[0].from).toBe('Alice');
|
||||
expect(messages[2].from).toBe('Bob');
|
||||
});
|
||||
it('it should handle several leading spaces in lines in a sequenceDiagram', function () {
|
||||
str = 'sequenceDiagram\n' +
|
||||
' Alice->Bob: Hello Bob, how are you?\n\n' +
|
||||
'%% Comment\n' +
|
||||
'Note right of Bob: Bob thinks\n' +
|
||||
'Bob-->Alice: I am good thanks!\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(3);
|
||||
|
||||
expect(messages[0].from).toBe('Alice');
|
||||
expect(messages[2].from).toBe('Bob');
|
||||
});
|
||||
it('it should handle several leading spaces in lines in a sequenceDiagram', function () {
|
||||
str = 'sequenceDiagram\n'+
|
||||
'participant Alice\n'+
|
||||
'participant Bob\n'+
|
||||
'Alice->John: Hello John, how are you?\n'+
|
||||
' loop Healthcheck\n'+
|
||||
'John->John: Fight against hypochondria\n'+
|
||||
' end\n'+
|
||||
'Note right of John: Rational thoughts<br/>prevail...\n'+
|
||||
' John-->Alice: Great!\n'+
|
||||
' John->Bob: How about you?\n'+
|
||||
'Bob-->John: Jolly good!\n';
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
|
||||
expect(messages.length).toBe(8);
|
||||
|
||||
expect(messages[0].from).toBe('Alice');
|
||||
expect(messages[2].from).toBe('John');
|
||||
});
|
||||
|
||||
it('it should handle loop statements a sequenceDiagram', function () {
|
||||
var str = 'sequenceDiagram\n' +
|
||||
'Alice->Bob: Hello Bob, how are you?\n\n' +
|
||||
@@ -86,15 +235,16 @@ describe('when parsing a sequenceDiagram',function() {
|
||||
|
||||
sq.parse(str);
|
||||
var actors = sq.yy.getActors();
|
||||
expect(actors.Alice).ToBdescription = 'Alice';
|
||||
//console.log(actors);
|
||||
expect(actors.Alice.description).toBe('Alice');
|
||||
actors.Bob.description = 'Bob';
|
||||
|
||||
var messages = sq.yy.getMessages();
|
||||
//console.log(messages);
|
||||
|
||||
expect(messages.length).toBe(5);
|
||||
|
||||
expect(messages[0].from).toBe('Alice');
|
||||
expect(messages[3].from).toBe('Bob');
|
||||
expect(messages[1].from).toBe('Bob');
|
||||
|
||||
|
||||
});
|
||||
@@ -463,7 +613,7 @@ describe('when rendering a sequenceDiagram',function() {
|
||||
'Alice->Bob: Hello Bob, how are you?\n'+
|
||||
'loop Cheers\n' +
|
||||
'Bob->Alice: Fine!\n' +
|
||||
'end';
|
||||
'end\n';
|
||||
sq.parse(str);
|
||||
sd.draw(str,'tst');
|
||||
|
||||
|
Reference in New Issue
Block a user