Add greater-than-equal-to matcher

This commit is contained in:
Michael Miller 2019-01-23 20:37:33 -07:00
parent ea6d7eac2a
commit 9ccba7570e
2 changed files with 27 additions and 2 deletions

View file

@ -37,8 +37,8 @@ module Spectator::Matchers
# ``` # ```
# expect(2).to be >= 1 # expect(2).to be >= 1
# ``` # ```
def >=(other : ExpectedType) forall ExpectedType def >=(expected : ExpectedType) forall ExpectedType
raise NotImplementedError.new("be >=") GreaterThanEqualMatcher.new(expected)
end end
# Creates a matcher that checks if a value is equal to an expected value. # Creates a matcher that checks if a value is equal to an expected value.

View file

@ -0,0 +1,25 @@
require "./value_matcher"
module Spectator::Matchers
# Matcher that tests whether one value is greater than or equal to another.
# The values are compared with the `>=` operator.
struct GreaterThanEqualMatcher(ExpectedType) < ValueMatcher(ExpectedType)
# Determines whether the matcher is satisfied with the value given to it.
# True is returned if the match was successful, false otherwise.
def match?(partial : Expectations::ValueExpectationPartial(ActualType)) : Bool forall ActualType
partial.actual >= expected
end
# Describes the condition that satisfies the matcher.
# This is informational and displayed to the end-user.
def message(partial : Expectations::ValueExpectationPartial(ActualType)) : String forall ActualType
"Expected #{partial.label} to be greater than or equal to #{label} (using >=)"
end
# Describes the condition that won't satsify the matcher.
# This is informational and displayed to the end-user.
def negated_message(partial : Expectations::ValueExpectationPartial(ActualType)) : String forall ActualType
"Expected #{partial.label} to not be greater than or equal to #{label} (using >=)"
end
end
end