Packages
espec
0.6.0
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
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: "to not"
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: "to not"
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