Packages
espec
1.5.1
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 `#{inspect(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: "`#{inspect(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 `#{inspect(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 `#{inspect(term)}` was thrown."
end
end