mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Use new style expectations and actuals in DSL
This commit is contained in:
parent
96c271cf33
commit
79a095bb31
2 changed files with 20 additions and 7 deletions
|
@ -19,7 +19,9 @@ 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__)
|
||||
::Spectator::Expectations::ValueExpectationPartial.new({{actual}}, {{actual.stringify}}, {{_source_file}}, {{_source_line}})
|
||||
value_actual = ::Spectator::Expectations::ValueActual.new({{actual.stringify}}, {{actual}})
|
||||
source = ::Spectator::Source.new({{_source_file}}, {{_source_line}})
|
||||
::Spectator::Expectations::ExpectationPartial.new(value_actual, source)
|
||||
end
|
||||
|
||||
# Starts an expectation on a block of code.
|
||||
|
@ -68,12 +70,15 @@ 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)
|
||||
::Spectator::Expectations::BlockExpectationPartial.new(%partial, {{"#" + method_name}}, {{_source_file}}, {{_source_line}})
|
||||
block_actual = ::Spectator::Expectations::ValueActual.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.
|
||||
::Spectator::Expectations::BlockExpectationPartial.new(%proc, "`" + {{block.body.stringify}} + "`", {{_source_file}}, {{_source_line}})
|
||||
block_actual = ::Spectator::Expectations::ValueActual.new({{"`" + block.body.stringify + "`"}}, %proc)
|
||||
{% end %}
|
||||
|
||||
source = ::Spectator::Source.new({{_source_file}}, {{_source_line}})
|
||||
::Spectator::Expectations::ExpectationPartial.new(block_actual, source)
|
||||
end
|
||||
|
||||
# Starts an expectation.
|
||||
|
|
|
@ -21,13 +21,17 @@ 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.
|
||||
::Spectator::Expectations::ValueExpectationPartial.new(self, __FILE__, __LINE__).to(matcher)
|
||||
actual = ::Spectator::Expectations::ValueActual.new(self)
|
||||
source = ::Spectator::Source.new(__FILE__, __LINE__)
|
||||
::Spectator::Expectations::ExpectationPartial.new(actual, source).to(matcher)
|
||||
end
|
||||
|
||||
# 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)
|
||||
::Spectator::Expectations::ValueExpectationPartial.new(self, __FILE__, __LINE__).to_not(matcher)
|
||||
actual = ::Spectator::Expectations::ValueActual.new(self)
|
||||
source = ::Spectator::Source.new(__FILE__, __LINE__)
|
||||
::Spectator::Expectations::ExpectationPartial.new(actual, source).to_not(matcher)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -35,12 +39,16 @@ 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)
|
||||
::Spectator::Expectations::BlockExpectationPartial.new(self, __FILE__, __LINE__).to(matcher)
|
||||
actual = ::Spectator::Expectations::BlockActual.new(self)
|
||||
source = ::Spectator::Source.new(__FILE__, __LINE__)
|
||||
::Spectator::Expectations::ExpectationPartial.new(actual, source).to(matcher)
|
||||
end
|
||||
|
||||
# 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)
|
||||
::Spectator::Expectations::BlockExpectationPartial.new(self, __FILE__, __LINE__).to_not(matcher)
|
||||
actual = ::Spectator::Expectations::BlockActual.new(self)
|
||||
source = ::Spectator::Source.new(__FILE__, __LINE__)
|
||||
::Spectator::Expectations::BlockExpectationPartial.new(actual, source).to_not(matcher)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue