Packages
espec
1.9.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/refute_receive.ex
defmodule ESpec.RefuteReceive do
@moduledoc """
Defines `refute_receive` and `refute_received` helper macros
"""
@default_timeout 100
defmodule RefuteReceiveError do
defexception message: nil
end
alias ESpec.ExpectTo
alias ESpec.Assertions.RefuteReceive
@doc "Asserts that a message matching `pattern` was not received (and won't be received) within the `timeout` period."
defmacro refute_receive(pattern, timeout \\ @default_timeout) do
do_refute_receive(pattern, timeout)
end
@doc "Asserts a message matching `pattern` was not received (i.e. it is not in the current process' mailbox)"
defmacro refute_received(pattern) do
do_refute_receive(pattern, 0)
end
defp do_refute_receive(pattern, timeout) do
binary = Macro.to_string(pattern)
ESpec.RefuteReceive.__refute_receive__(pattern, binary, timeout)
end
@doc false
def __refute_receive__(pattern, binary, timeout \\ 100) do
quote do
result =
receive do
unquote(pattern) -> true
after
unquote(timeout) -> false
end
ExpectTo.to({RefuteReceive, unquote(binary)}, {ExpectTo, result, nil})
end
end
end