Packages
espec
1.8.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/be_close_to.ex
defmodule ESpec.Assertions.BeCloseTo do
@moduledoc """
Defines 'be_close_to' assertion.
it do: expect(2).to be_close_to(1, 3)
"""
use ESpec.Assertions.Interface
alias ESpec.DatesTimes.Comparator
defp match(subject, [value, {granularity, delta}] = _data) do
actual_delta =
subject
|> Comparator.diff(value, granularity)
|> abs()
result =
actual_delta
|> Kernel.<=(delta)
{result, {granularity, actual_delta}}
end
defp match(subject, data) do
[value, delta] = data
result = abs(subject - value) <= delta
{result, result}
end
defp success_message(subject, [value, delta], _result, positive) do
to = if positive, do: "is", else: "is not"
"`#{inspect(subject)}` #{to} close to `#{inspect(value)}` with delta `#{inspect(delta)}`."
end
defp error_message(subject, [value, delta], {granularity, actual_delta} = _result, positive) do
to = if positive, do: "to", else: "not to"
but = if actual_delta == delta, do: "it is", else: "it isn't"
"Expected `#{inspect(subject)}` #{to} be close to `#{inspect(value)}` with delta `#{
inspect(delta)
}`, but #{but}. The actual delta is {:#{granularity}, #{actual_delta}}."
end
defp error_message(subject, [value, delta], result, positive) do
to = if positive, do: "to", else: "not to"
but = if result, do: "it is", else: "it isn't"
"Expected `#{inspect(subject)}` #{to} be close to `#{inspect(value)}` with delta `#{
inspect(delta)
}`, but #{but}."
end
end