Rename again

This naming is more appropriate since these types can be used for
expected and actual values.
This commit is contained in:
Michael Miller 2019-08-01 15:38:20 -06:00
parent dd69cec536
commit 763a65beac
6 changed files with 29 additions and 27 deletions

View file

@ -19,7 +19,7 @@ module Spectator::DSL
# Where the actual value is returned by the system-under-test,
# and the expected value is what the actual value should be to satisfy the condition.
macro expect(actual, _source_file = __FILE__, _source_line = __LINE__)
value_actual = ::Spectator::Expectations::ActualValue.new({{actual.stringify}}, {{actual}})
test_value = ::Spectator::TestValue.new({{actual.stringify}}, {{actual}})
source = ::Spectator::Source.new({{_source_file}}, {{_source_line}})
::Spectator::Expectations::ExpectationPartial.new(value_actual, source)
end
@ -70,11 +70,11 @@ module Spectator::DSL
# The raw block can't be used because it's not clear to the user.
{% method_name = block.body.id.split('.')[1..-1].join('.') %}
%partial = %proc.partial(subject)
block_actual = ::Spectator::Expectations::ActualBlock.new({{"#" + method_name}}, %partial)
test_block = ::Spectator::Expectations::TestBlock.new({{"#" + method_name}}, %partial)
{% else %}
# In this case, it looks like the short-hand method syntax wasn't used.
# Just drop in the proc as-is.
block_actual = ::Spectator::Expectations::ActualBlock.new({{"`" + block.body.stringify + "`"}}, %proc)
test_block = ::Spectator::Expectations::TestBlock.new({{"`" + block.body.stringify + "`"}}, %proc)
{% end %}
source = ::Spectator::Source.new({{_source_file}}, {{_source_line}})

View file

@ -1,6 +1,6 @@
require "../matchers/match_data"
require "../source"
require "./actual"
require "../test_expression"
module Spectator::Expectations
# Stores part of an expectation (obviously).
@ -9,7 +9,7 @@ module Spectator::Expectations
struct ExpectationPartial
# The actual value being tested.
# This also contains its label.
getter actual : Actual
getter actual : TestExpression
# Location where this expectation was defined.
getter source : Source

View file

@ -21,7 +21,7 @@ class Object
# However, since this isn't a macro and we can't "look behind" this method call
# to see what it was invoked on, the argument is an empty string.
# Additionally, the source file and line can't be obtained.
actual = ::Spectator::Expectations::ActualValue.new(self)
actual = ::Spectator::Expectations::TestValue.new(self)
source = ::Spectator::Source.new(__FILE__, __LINE__)
::Spectator::Expectations::ExpectationPartial.new(actual, source).to(matcher)
end
@ -29,7 +29,7 @@ class Object
# Works the same as `#should` except the condition is inverted.
# When `#should` succeeds, this method will fail, and vice-versa.
def should_not(matcher : ::Spectator::Matchers::Matcher)
actual = ::Spectator::Expectations::ActualValue.new(self)
actual = ::Spectator::Expectations::TestValue.new(self)
source = ::Spectator::Source.new(__FILE__, __LINE__)
::Spectator::Expectations::ExpectationPartial.new(actual, source).to_not(matcher)
end
@ -39,7 +39,7 @@ struct Proc(*T, R)
# Extension method to create an expectation for a block of code (proc).
# Depending on the matcher, the proc may be executed multiple times.
def should(matcher : ::Spectator::Matchers::Matcher)
actual = ::Spectator::Expectations::ActualBlock.new(self)
actual = ::Spectator::Expectations::TestBlock.new(self)
source = ::Spectator::Source.new(__FILE__, __LINE__)
::Spectator::Expectations::ExpectationPartial.new(actual, source).to(matcher)
end
@ -47,7 +47,7 @@ struct Proc(*T, R)
# Works the same as `#should` except the condition is inverted.
# When `#should` succeeds, this method will fail, and vice-versa.
def should_not(matcher : ::Spectator::Matchers::Matcher)
actual = ::Spectator::Expectations::ActualBlock.new(self)
actual = ::Spectator::Expectations::TestBlock.new(self)
source = ::Spectator::Source.new(__FILE__, __LINE__)
::Spectator::Expectations::BlockExpectationPartial.new(actual, source).to_not(matcher)
end

View file

@ -1,26 +1,26 @@
require "./actual"
require "./test_expression"
module Spectator::Expectations
# Captures an actual block and its label.
struct ActualBlock(ReturnType) < Actual
module Spectator
# Captures an block from a test and its label.
struct TestBlock(ReturnType) < TestExpression
# Calls the block and retrieves the value.
def value : ReturnType
@proc.call
end
# Creates the actual with a custom label.
# Creates the block expression with a custom label.
# Typically the label is the code in the block/proc.
def initialize(label : String, @proc : -> ReturnType)
super(label)
end
# Creates the actual with a generic label.
# Creates the block expression with a generic label.
# This is used for the "should" syntax and when the label doesn't matter.
def initialize(@proc : -> ReturnType)
super("<Proc>")
end
# Reports complete information about the actual value.
# Reports complete information about the expression.
def inspect(io)
io << label
io << " -> "

View file

@ -1,6 +1,6 @@
module Spectator::Expectations
# Base class for capturing an actual value - the thing being checked/tested.
abstract struct Actual
# Base type for capturing an expression from a test.
abstract struct TestExpression
# User-friendly string displayed for the actual expression being tested.
# For instance, in the expectation:
# ```
@ -11,11 +11,11 @@ module Spectator::Expectations
# and not the actual value of the foo.
getter label : String
# Creates the common base of the actual value.
# Creates the common base of the expression.
def initialize(@label)
end
# String representation of the actual value.
# String representation of the expression.
def to_s(io)
io << label
end

View file

@ -1,27 +1,29 @@
require "./actual"
require "./test_expression"
module Spectator::Expectations
# Captures an actual value and its label.
struct ActualValue(T) < Actual
module Spectator
# Captures a value from a test and its label.
struct TestValue(T) < TestExpression
# Actual value.
getter value : T
# Creates the actual with a custom label.
# Creates the expression value with a custom label.
def initialize(label : String, @value)
super(label)
end
# Creates the actual with a stringified value.
# Creates the expression with a stringified value.
# This is used for the "should" syntax and when the label doesn't matter.
def initialize(@value)
super(@value.to_s)
end
# Reports complete information about the actual value.
# Reports complete information about the expression.
def inspect(io)
io << label
io << '='
io << @value
end
end
alias LabeledValue = TestValue(String)
end