Packages
espec
1.10.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/match_pattern.ex
defmodule ESpec.Assertions.MatchPattern do
@moduledoc """
Defines 'match_pattern' (=) assertion.
it do: expect(actual).to match_pattern(expected)
"""
use ESpec.Assertions.Interface
defp match(subject, [pattern, env, vars]) do
pattern = Macro.expand(pattern, env)
result_quote = quote do: match?(unquote(pattern), unquote(Macro.escape(subject)))
{result, _} = Code.eval_quoted(result_quote, vars, env)
{result, result}
end
defp success_message(subject, [pattern, _env, _vars], _result, positive) do
data = Macro.to_string(pattern)
to = if positive, do: "matches", else: "doesn't match"
"`#{inspect(subject)}` #{to} pattern (=) `#{data}`."
end
defp error_message(subject, [pattern, _env, _vars], _result, positive) do
data = Macro.to_string(pattern)
to = if positive, do: "to", else: "not to"
but = if positive, do: "doesn't", else: "does"
{
"Expected `#{inspect(subject)}` #{to} match pattern (=) `#{data}`, but it #{but}.",
nil
}
end
end