View Source Corsa.Expects (corsa v0.1.2)
The expect specifies the acceptable messages in a receive statement.
Example
iex> defmodule Elixir.Corsa.Expects.Example do
...> use Corsa.Assert
...> use Corsa.Expects
...>
...> def counter(state) do
...> expects [v > 0, receive do
...> :inc -> counter(state + 1)
...> :dec -> counter(state - 1)
...> {:set, v} -> counter(v)
...> end]
...> end
...> end
iex> send(self(), :inc)
iex> send(self(), {:set, 10})
iex> send(self(), {:set, -1})
iex> Elixir.Corsa.Expects.Example.counter(0)
** (Corsa.ExpectsViolationError) @expects does not hold in expression 'v > 0' with values left '-1' and right '0'
Summary
Functions
Errors
iex> defmodule Elixir.Corsa.Expects.ExampleError1 do
...> use Corsa.Assert
...> use Corsa.Expects
...>
...> def f(state) do
...> expects [error, receive do end]
...> end
...> end
** (Corsa.ExpectsError) syntax error in @expects
iex> defmodule Elixir.Corsa.Expects.ExampleError2 do
...> use Corsa.Assert
...> use Corsa.Expects
...>
...> def f(state) do
...> expects [v > 0, error do end]
...> end
...> end
** (Corsa.ExpectsError) syntax error in @expects
Functions
Errors
iex> defmodule Elixir.Corsa.Expects.ExampleError1 do
...> use Corsa.Assert
...> use Corsa.Expects
...>
...> def f(state) do
...> expects [error, receive do end]
...> end
...> end
** (Corsa.ExpectsError) syntax error in @expects
iex> defmodule Elixir.Corsa.Expects.ExampleError2 do
...> use Corsa.Assert
...> use Corsa.Expects
...>
...> def f(state) do
...> expects [v > 0, error do end]
...> end
...> end
** (Corsa.ExpectsError) syntax error in @expects