I am trying to test HashSet using doctest via iex. If I run the line below, it gives the same result, but the #HashSet<["rockerboo"]>}
can not be represented in the syntax. I can't think of a way to represent it properly, and I can't find any examples of it. Thanks!
@doc """
Adds user to HashSet in state
## Examples
iex> Elirc.Channel.add_user_to_state("rockerboo", %{users: HashSet.new})
%{users: #HashSet<["rockerboo"]>}
"""
def add_user_to_state(user, state) do
%{state | users: HashSet.put(state.users, user) }
end
When running mix test
, I get the following error.
Doctest did not compile, got: (TokenMissingError) lib/elirc/channel.ex:99: missing terminator: } (for "{" starting at line 99)
code: %{users: #HashSet<["rockerboo"]>}
Line 99 is %{state...
You can construct your HashSet
in a different way so that it's a valid Elixir expression. For example this worked for me:
## Examples
iex> Elirc.Channel.add_user_to_state("rockerboo", %{users: HashSet.new})
%{users: ["rockerboo"] |> Enum.into(HashSet.new)}
This is also the approach that is recommended by the ExUnit.DocTest documentation under "Opaque Types"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With