363 lines
6.1 KiB
EmacsLisp
363 lines
6.1 KiB
EmacsLisp
|
;;; plantuml-indentation-sequence-test.el --- PlantUML Mode indentation tests -*- lexical-binding: t; -*-
|
||
|
|
||
|
;; Author: René Schmelzer
|
||
|
;; Maintainer: Carlo Sciolla (skuro)
|
||
|
;; URL: https://github.com/skuro/plantuml-mode
|
||
|
|
||
|
;;; Commentary:
|
||
|
|
||
|
;; Test indentation for sequence diagrams.
|
||
|
|
||
|
;;; Code:
|
||
|
|
||
|
|
||
|
(ert-deftest platuml-test-block-indentation/sequence/box ()
|
||
|
"Test correct indentation of a box block"
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
box \"Device with USB connector\"
|
||
|
actor Human
|
||
|
participant UsbDetector
|
||
|
end box
|
||
|
"
|
||
|
"
|
||
|
box \"Device with USB connector\"
|
||
|
actor Human
|
||
|
participant UsbDetector
|
||
|
end box
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest platuml-test-block-indentation/sequence/ref ()
|
||
|
"Test correct indentation of a ref block"
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
participant Alice
|
||
|
actor Bob
|
||
|
participant \"Great Cesar\"
|
||
|
|
||
|
ref over Alice, Bob : init
|
||
|
|
||
|
Alice -> Bob : hello
|
||
|
|
||
|
ref over Bob, \"Great Cesar\"
|
||
|
This can be on
|
||
|
several lines
|
||
|
end ref
|
||
|
|
||
|
ref over Bob
|
||
|
This is a ref over Bob
|
||
|
end ref
|
||
|
|
||
|
ref over \"Great Cesar\"
|
||
|
This is a ref over \"Great Cesar\"
|
||
|
end ref
|
||
|
"
|
||
|
|
||
|
"
|
||
|
participant Alice
|
||
|
actor Bob
|
||
|
participant \"Great Cesar\"
|
||
|
|
||
|
ref over Alice, Bob : init
|
||
|
|
||
|
Alice -> Bob : hello
|
||
|
|
||
|
ref over Bob, \"Great Cesar\"
|
||
|
This can be on
|
||
|
several lines
|
||
|
end ref
|
||
|
|
||
|
ref over Bob
|
||
|
This is a ref over Bob
|
||
|
end ref
|
||
|
|
||
|
ref over \"Great Cesar\"
|
||
|
This is a ref over \"Great Cesar\"
|
||
|
end ref
|
||
|
" ))
|
||
|
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/alt-end ()
|
||
|
"Test correct indentation of an alt-end block.
|
||
|
The alt-keyword is NOT followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
alt
|
||
|
A -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
alt
|
||
|
A -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/alt-end-with-label ()
|
||
|
"Test correct indentation of an alt-end block.
|
||
|
The alt-keyword is followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
alt choice 1
|
||
|
A -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
alt choice 1
|
||
|
A -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/alt-else-end ()
|
||
|
"Test correct indentation of an alt-else-end block."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
alt choice 1
|
||
|
A -> B
|
||
|
else
|
||
|
B -> C
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
alt choice 1
|
||
|
A -> B
|
||
|
else
|
||
|
B -> C
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/opt ()
|
||
|
"Test correct indentation of an opt block.
|
||
|
The opt-keyword is NOT followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
opt
|
||
|
A -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
opt
|
||
|
A -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/opt-with-label ()
|
||
|
"Test correct indentation of an opt block.
|
||
|
The opt-keyword is followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
opt event triggered
|
||
|
A -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
opt event triggered
|
||
|
A -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/par ()
|
||
|
"Test correct indentation of a par block.
|
||
|
The par-keyword is NOT followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
par
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
par
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/par-with-label ()
|
||
|
"Test correct indentation of a par block.
|
||
|
The par-keyword is followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
par a text label
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
par a text label
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/group ()
|
||
|
"Test correct indentation of a group block.
|
||
|
The group-keyword is NOT followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
group
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
group
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/group-with-label ()
|
||
|
"Test correct indentation of a group block.
|
||
|
The group-keyword is followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
group my own label
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
group my own label
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/critical ()
|
||
|
"Test correct indentation of a critical block.
|
||
|
The critical-keyword is NOT followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
critical
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
critical
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/critical-with-label ()
|
||
|
"Test correct indentation of a critical block.
|
||
|
The critical-keyword is followed by some text."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
critical my own label
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
critical my own label
|
||
|
A -> B
|
||
|
else
|
||
|
C -> B
|
||
|
end
|
||
|
" ))
|
||
|
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/activate-deactivate ()
|
||
|
"Test correct indentation of an activate-deactivate block."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
activate participant_1
|
||
|
participant_1 -> participant_2 : f()
|
||
|
deactivate participant_1
|
||
|
"
|
||
|
"
|
||
|
activate participant_1
|
||
|
participant_1 -> participant_2 : f()
|
||
|
deactivate participant_1
|
||
|
"))
|
||
|
|
||
|
(ert-deftest plantuml-test-block-indentation/sequence/activate-deactivate-nested ()
|
||
|
"Test correct indentation of two nested activate-deactivate blocks."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
activate participant_1
|
||
|
activate participant_2
|
||
|
participant_1 -> participant_2 : f()
|
||
|
deactivate participant_2
|
||
|
deactivate participant_1
|
||
|
"
|
||
|
"
|
||
|
activate participant_1
|
||
|
activate participant_2
|
||
|
participant_1 -> participant_2 : f()
|
||
|
deactivate participant_2
|
||
|
deactivate participant_1
|
||
|
"))
|
||
|
|
||
|
|
||
|
(ert-deftest plantuml-test-indentation/sequence-diagram ()
|
||
|
"Test correct indentation of plantuml sequence diagram elements.
|
||
|
These code examples are taken from www.plantuml.com."
|
||
|
(plantuml-test-indent-block
|
||
|
"
|
||
|
Alice -> Bob: Authentication Request
|
||
|
|
||
|
alt successful case
|
||
|
|
||
|
Bob -> Alice: Authentication Accepted
|
||
|
|
||
|
else some kind of failure
|
||
|
|
||
|
Bob -> Alice: Authentication Failure
|
||
|
group My own label
|
||
|
Alice -> Log : Log attack start
|
||
|
loop 1000 times
|
||
|
Alice -> Bob: DNS Attack
|
||
|
end
|
||
|
Alice -> Log : Log attack end
|
||
|
end
|
||
|
|
||
|
else Another type of failure
|
||
|
|
||
|
Bob -> Alice: Please repeat
|
||
|
|
||
|
end
|
||
|
"
|
||
|
"
|
||
|
Alice -> Bob: Authentication Request
|
||
|
|
||
|
alt successful case
|
||
|
|
||
|
Bob -> Alice: Authentication Accepted
|
||
|
|
||
|
else some kind of failure
|
||
|
|
||
|
Bob -> Alice: Authentication Failure
|
||
|
group My own label
|
||
|
Alice -> Log : Log attack start
|
||
|
loop 1000 times
|
||
|
Alice -> Bob: DNS Attack
|
||
|
end
|
||
|
Alice -> Log : Log attack end
|
||
|
end
|
||
|
|
||
|
else Another type of failure
|
||
|
|
||
|
Bob -> Alice: Please repeat
|
||
|
|
||
|
end
|
||
|
"))
|
||
|
|
||
|
|
||
|
(provide 'plantuml-indentation-sequence-test)
|
||
|
|
||
|
;;; plantuml-indentation-sequence-test.el ends here
|