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