View Source Corsa.StateM.Throws (corsa v0.1.2)

throws verifies if a thrown exception is anticipated. When a state machine is utilized, the contract has the ability to access the state.

Summary

Functions

Errors

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError1 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(x, y) do x > y end
...>   throws f(x, y) do x > y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) @throws for function 'f/2' already defined

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError2 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(x, x) do x > y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) arguments in @throws should contain different names

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError3 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(x, _) do x > y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) arguments in @throws cannot be ignored with _

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError4 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(kind, x) do x > 0 end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) 'kind' cannot be an argument in @throws

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError5 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(value, x) do value < 0 end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) 'value' cannot be an argument in @throws

Functions

Link to this macro

throws(arg1, arg2)

View Source (macro)

Errors

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError1 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(x, y) do x > y end
...>   throws f(x, y) do x > y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) @throws for function 'f/2' already defined

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError2 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(x, x) do x > y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) arguments in @throws should contain different names

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError3 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(x, _) do x > y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) arguments in @throws cannot be ignored with _

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError4 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(kind, x) do x > 0 end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) 'kind' cannot be an argument in @throws

iex> defmodule Elixir.Corsa.StateM.Throws.ExampleError5 do
...>   use Corsa.Assert
...>   use Corsa.StateM.Throws
...>   throws f(value, x) do value < 0 end
...>   def f(x, y) do x + y end
...> end
** (Corsa.ThrowsError) 'value' cannot be an argument in @throws