Packages
espec
0.8.6
1.10.0
1.9.2
1.9.1
1.9.0
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.7
0.3.5
0.3.0
0.2.0
0.1.0
BDD testing framework for Elixir inspired by RSpec.
Current section
Files
Jump to
Current section
Files
lib/espec/assertions/throw_term.ex
defmodule ESpec.Assertions.ThrowTerm do
@moduledoc """
Defines 'throw_term' assertion.
it do: expect(function).to throw_term
it do: expect(function).to throw_term(term)
"""
use ESpec.Assertions.Interface
defp match(subject, []) do
try do
subject.()
{:false, :false}
catch
term -> {:true, term}
end
end
defp match(subject, [term]) do
try do
subject.()
{:false, {term, false}}
catch
t -> if t == term, do: {true, {t, false}}, else: {:false, {t, :true}}
end
end
defp success_message(subject, [], _result, positive) do
to = if positive, do: "throws", else: "doesn't throw"
"#{inspect subject} #{to} a term."
end
defp success_message(subject, [data], _result, positive) do
to = if positive, do: "throws", else: "doesn't throw"
"#{inspect subject} #{to} the `#{data}` term."
end
defp error_message(subject, [], term, positive) do
to = if positive, do: "to", else: "not to"
but = if positive, do: "nothing was thrown", else: "`#{term}` was thrown"
"Expected `#{inspect subject}` #{to} throw term, but #{but}."
end
defp error_message(subject, [data], {term, false}, positive) do
to = if positive, do: "to", else: "not to"
but = if positive, do: "nothing was thrown", else: "the `#{term}` was thrown"
"Expected `#{inspect subject}` #{to} throw #{inspect data}, but #{but}."
end
defp error_message(subject, [data], {term, :true}, _positive) do
"Expected `#{inspect subject}`to throw #{inspect data}, but the `#{term}` was thrown."
end
end