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,
|
# 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.
|
# and the expected value is what the actual value should be to satisfy the condition.
|
||||||
macro expect(actual, _source_file = __FILE__, _source_line = __LINE__)
|
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
|
end
|
||||||
|
|
||||||
# Starts an expectation on a block of code.
|
# 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.
|
# The raw block can't be used because it's not clear to the user.
|
||||||
{% method_name = block.body.id.split('.')[1..-1].join('.') %}
|
{% method_name = block.body.id.split('.')[1..-1].join('.') %}
|
||||||
%partial = %proc.partial(subject)
|
%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 %}
|
{% else %}
|
||||||
# In this case, it looks like the short-hand method syntax wasn't used.
|
# In this case, it looks like the short-hand method syntax wasn't used.
|
||||||
# Just drop in the proc as-is.
|
# 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 %}
|
{% end %}
|
||||||
|
|
||||||
|
source = ::Spectator::Source.new({{_source_file}}, {{_source_line}})
|
||||||
|
::Spectator::Expectations::ExpectationPartial.new(block_actual, source)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Starts an expectation.
|
# 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
|
# 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.
|
# to see what it was invoked on, the argument is an empty string.
|
||||||
# Additionally, the source file and line can't be obtained.
|
# 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
|
end
|
||||||
|
|
||||||
# Works the same as `#should` except the condition is inverted.
|
# Works the same as `#should` except the condition is inverted.
|
||||||
# When `#should` succeeds, this method will fail, and vice-versa.
|
# When `#should` succeeds, this method will fail, and vice-versa.
|
||||||
def should_not(matcher : ::Spectator::Matchers::Matcher)
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -35,12 +39,16 @@ struct Proc(*T, R)
|
||||||
# Extension method to create an expectation for a block of code (proc).
|
# Extension method to create an expectation for a block of code (proc).
|
||||||
# Depending on the matcher, the proc may be executed multiple times.
|
# Depending on the matcher, the proc may be executed multiple times.
|
||||||
def should(matcher : ::Spectator::Matchers::Matcher)
|
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
|
end
|
||||||
|
|
||||||
# Works the same as `#should` except the condition is inverted.
|
# Works the same as `#should` except the condition is inverted.
|
||||||
# When `#should` succeeds, this method will fail, and vice-versa.
|
# When `#should` succeeds, this method will fail, and vice-versa.
|
||||||
def should_not(matcher : ::Spectator::Matchers::Matcher)
|
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
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue