# smtc

> A test case generator from state machine diagram

Latest version **1.0.1** (published 2020-06-06) · MIT license · 0 weekly downloads

## Install

```sh
npm install smtc
pnpm add smtc
yarn add smtc
bun add smtc
```

Provides the command `smtc`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2020-06-06 |
| First published | 2020-05-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 15.8 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Fumikazu Fujiwara |
| Maintainers | freddiefujiwara |
| Keywords | state-machine, testing-tools, testcase-generator |

## Links

- npm: https://www.npmjs.com/package/smtc
- Repository: https://github.com/freddiefujiwara/smtc
- Homepage: https://freddiefujiwara.github.io/smtc/
- Issues: https://github.com/freddiefujiwara/smtc/issues
- npm.io page: https://npm.io/package/smtc

## Dependencies (3)

- [markdown](https://npm.io/package/markdown.md) ^0.5.0
- [minimist](https://npm.io/package/minimist.md) ^1.2.5
- [state-machine-cat](https://npm.io/package/state-machine-cat.md) ^7.0.3

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads
- [aws-elasticsearch-connector](https://npm.io/package/aws-elasticsearch-connector.md) — 37.4K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2020-06-06
- 1.0.0 — 2020-05-30
- 0.0.9 — 2020-05-25
- 0.0.8 — 2020-05-24
- 0.0.7 — 2020-05-24
- 0.0.6 — 2020-05-24
- 0.0.5 — 2020-05-23
- 0.0.4 — 2020-05-22
- 0.0.3 — 2020-05-22
- 0.0.2 — 2020-05-22
- 0.0.1 — 2020-05-22

## README

![Node.js CI](https://github.com/freddiefujiwara/smtc/workflows/Node.js%20CI/badge.svg)[![npm version](https://badge.fury.io/js/smtc.svg)](https://badge.fury.io/js/smtc)

# smtc
This is a Smtc class. It's a "S"tate "M"achine "T"est "C"ase generator inspired by https://note.com/yumotsuyo/n/nd3099b40dc1f

Try it in your browser! [TRY IT NOW](https://freddiefujiwara.github.io/smtc/#inputscript)

Document is [here](https://github.com/freddiefujiwara/smtc/blob/master/DOCS.md)

# install

``` shell
$ npm i -g smtc
```

# Usage
## command line
``` shell
# -h:help
# <file>:inputscript
# -s : switch
# -t : output type t:transition/m:matrix/c:testcases/d:diagram
smtc [-h] <file> [-s <0|1|2... (0:default)>] [-t <t|m|c|d (t:default)>]
```

## sample data
![alt text](https://raw.githubusercontent.com/freddiefujiwara/smtc/master/__tests__/testData.svg)

``` 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 %}

---
_Source: https://npm.io/package/smtc · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
