A test case generator from state machine diagram
npm install smtc!Node.js CI
Try it in your browser! TRY IT NOW
Document is here
`` shell`
$ npm i -g smtc
shell
-h:help
:inputscript
-s : switch
-t : output type t:transition/m:matrix/c:testcases/d:diagram
smtc [-h] [-s <0|1|2... (0:default)>] [-t ]
`sample data
!alt text` shell
$ cat __tests__/testData.txt
initial => "Accepting reservations" ;
"Accepting reservations" => "Reservation accepted" : reserve ;
"Reservation accepted" => "Reserved" : approve;
"Reserved" => "Reservation accepted" : cancel approval;
"Reservation accepted" => "Accepting reservations" : reject;
"Reservation accepted" => "Accepting reservations" : cancel of reservation;
"Reserved" => "Accepting reservations" : cancel;
"Reserved" => final : car delivered;
`Transition matrix
`shell
$ smtc __tests__/testData.txt
`||[None]|reserve|approve|cancel approval|reject|cancel of reservation|cancel|car delivered|
|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|initial|Accepting reservations||||||||
|Accepting reservations||Reservation accepted|||||||
|Reservation accepted|||Reserved||Accepting reservations|Accepting reservations|||
|Reserved||||Reservation accepted|||Accepting reservations|final|
|final|||||||||
zero switch cases
`shell
$ smtc __tests__/testData.txt -t c
`|#|State#1|Event#1|State#2|
|:--|:--|:--|:--|
|0|initial|[None]|Accepting reservations|
|1|Accepting reservations|reserve|Reservation accepted|
|2|Reservation accepted|reject|Accepting reservations|
|3|Reservation accepted|cancel of reservation|Accepting reservations|
|4|Reservation accepted|approve|Reserved|
|5|Reserved|cancel|Accepting reservations|
|6|Reserved|cancel approval|Reservation accepted|
|7|Reserved|car delivered|final|
zero switch matrix
`shell
$ smtc __tests__/testData.txt -t m
`||initial|Accepting reservations|Reservation accepted|Reserved|final|
|:--|:--|:--|:--|:--|:--|
|initial||[None]||||
|Accepting reservations|||reserve|||
|Reservation accepted||reject,cancel of reservation||approve||
|Reserved||cancel|cancel approval||car delivered|
|final||||||
one switch cases
`shell
$ smtc __tests__/testData.txt -t c -s 1
`|#|State#1|Event#1|State#2|Event#2|State#3|
|:--|:--|:--|:--|:--|:--|
|0|initial|[None]|Accepting reservations|reserve|Reservation accepted|
|1|Accepting reservations|reserve|Reservation accepted|reject|Accepting reservations|
|2|Accepting reservations|reserve|Reservation accepted|cancel of reservation|Accepting reservations|
|3|Accepting reservations|reserve|Reservation accepted|approve|Reserved|
|4|Reservation accepted|approve|Reserved|cancel|Accepting reservations|
|5|Reservation accepted|reject|Accepting reservations|reserve|Reservation accepted|
|6|Reservation accepted|cancel of reservation|Accepting reservations|reserve|Reservation accepted|
|7|Reservation accepted|approve|Reserved|cancel approval|Reservation accepted|
|8|Reservation accepted|approve|Reserved|car delivered|final|
|9|Reserved|cancel approval|Reservation accepted|reject|Accepting reservations|
|10|Reserved|cancel approval|Reservation accepted|cancel of reservation|Accepting reservations|
|11|Reserved|cancel|Accepting reservations|reserve|Reservation accepted|
|12|Reserved|cancel approval|Reservation accepted|approve|Reserved|
one switch matrix
`shell
$ smtc __tests__/testData.txt -t m -s 1
``||initial|Accepting reservations|Reservation accepted|Reserved|final|
|:--|:--|:--|:--|:--|:--|
|initial|||[None] -> reserve|||
|Accepting reservations||reserve -> reject,reserve -> cancel of reservation||reserve -> approve||
|Reservation accepted||approve -> cancel|reject -> reserve,cancel of reservation -> reserve,approve -> cancel approval||approve -> car delivered|
|Reserved||cancel approval -> reject,cancel approval -> cancel of reservation|cancel -> reserve|cancel approval -> approve||
|final||||||
{% include form.html %}