Packages
finitomata
0.23.6
0.41.0
0.40.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.30.3
0.30.2
0.30.1
0.30.0
0.29.10
0.29.9
0.29.8
0.29.7
0.29.6
0.29.5
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.1
0.28.0
0.27.1
0.27.0
0.26.4
0.26.3
0.26.2
0.26.1
0.26.0
0.25.0
0.24.4
0.24.3
0.24.2
0.24.1
0.24.0
0.23.7
0.23.6
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.0
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.1
0.1.0
The FSM implementation generated from PlantUML textual representation.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/test_template.eex
defmodule <%= inspect(@test_module) %> do
use ExUnit.Case
import Finitomata.ExUnit
import Mox
<%= for {{path_def, path}, number} <- Enum.with_index(@paths) do %>
describe "<%= path_def |> inspect() |> String.replace(~r/⇥ \"[\w!?]+\" /, "") %>" do
setup_finitomata do
# *************************************
# **** PUT THE INITIALIZATION HERE ****
# *************************************
# **** context example:
parent = self()
[
fsm: [
implementation: <%= inspect(@module) %>,
payload: %{},
options: [transition_count: <%= path |> List.flatten() |> length() %>]
],
context: [parent: parent]
]
end
test_path "path #<%= number %>", %{finitomata: %{}, parent: _} = _ctx do
<%= for [{event, state} | states] <- path do %>
<%= if event == :__start__ do %>
:* ->
# these validations are not yet handled by `Finitomata.ExUnit`
# pattern match directly in the context above as shown below to validate
#
# %{finitomata: %{auto_init_msgs: %{idle: :foo, started: :bar}}} = _ctx
assert_state <%= inspect(state) %> <%= for {_event, state} <- states do %>
assert_state <%= inspect(state) %> <% end %>
<% else %>
{<%= inspect(event) %>, nil} ->
assert_state <%= inspect(state) %> do
assert_payload do
# foo.bar.baz ~> ^parent
end
end
<%= for {_event, state} <- states do %>
assert_state <%= inspect(state) %> do
assert_payload do
# baz ~> ^parent
end
end
<% end %>
<% end %>
<% end %>
end
end <% end %>
end