Condense expected and actual values and labels

Created a new struct specifically to store expected and actual valuesand
their user labels.
This commit is contained in:
Michael Miller 2019-02-28 14:05:31 -07:00
parent 520901332e
commit 4c7e8a3225
2 changed files with 27 additions and 6 deletions

View file

@ -9,34 +9,35 @@ module Spectator::Matchers
def match(partial) : MatchData
actual = partial.actual
matched = actual == expected
MatchData.new(matched, expected, actual, partial.label, label)
values = ExpectedActual.new(expected, label, actual, partial.label)
MatchData.new(matched, values)
end
# Match data specific to this matcher.
private struct MatchData(ExpectedType, ActualType) < MatchData
# Creates the match data.
def initialize(matched, @expected : ExpectedType, @actual : ActualType, @expected_label : String, @actual_label : String)
def initialize(matched, @values : ExpectedActual(ExpectedType, ActualType))
super(matched)
end
# Information about the match.
def values
{
expected: @expected,
actual: @actual,
expected: @values.expected,
actual: @values.actual,
}
end
# Describes the condition that satisfies the matcher.
# This is informational and displayed to the end-user.
def message
"#{@expected_label} is #{@actual_label} (using ==)"
"#{@values.expected_label} is #{@values.actual_label} (using ==)"
end
# Describes the condition that won't satsify the matcher.
# This is informational and displayed to the end-user.
def negated_message
"#{@expected_label} is not #{@actual_label} (using ==)"
"#{@values.expected_label} is not #{@values.actual_label} (using ==)"
end
end
end

View file

@ -0,0 +1,20 @@
module Spectator::Matchers
# Stores values and labels for expected and actual values.
private struct ExpectedActual(ExpectedType, ActualType)
# The expected value.
getter expected : ExpectedType
# The user label for the expected value.
getter expected_label : String
# The actual value.
getter actual : ActualType
# The user label for the actual value.
getter actual_label : String
# Creates the value and label store.
def initialize(@expected : ExpectedType, @expected_label, @actual : ActualType, @actual_label)
end
end
end