Packages
finitomata
0.34.0
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
@moduletag :finitomata
<%= 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: %{parent: parent},
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 allow `assert_payload/2` calls only
#
# also one might pattern match to entry events with payloads directly
# %{finitomata: %{auto_init_msgs: [idle: :foo, started: :bar]} = _ctx
assert_state <%= inspect(state) %> <%= for {_event, state} <- states do %>
assert_state <%= inspect(state) %> do
# assert_payload %{}
end <% end %>
<% else %>
{<%= inspect(event) %>, nil} ->
assert_state <%= inspect(state) %> do
# assert_payload %{foo: :bar}
end
<%= for {_event, state} <- states do %>
assert_state <%= inspect(state) %> do
assert_payload do
# foo.bar.baz ~> ^parent
end
end
<% end %>
<% end %>
<% end %>
end
end <% end %>
end