2018-08-18 21:33:20 +00:00
|
|
|
require "spec"
|
|
|
|
require "../src/spectator"
|
2018-10-19 19:54:32 +00:00
|
|
|
require "./expectations_helper"
|
2018-10-15 06:32:29 +00:00
|
|
|
|
|
|
|
# Prevent Spectator from trying to run tests.
|
|
|
|
Spectator.autorun = false
|
2018-10-18 19:46:12 +00:00
|
|
|
|
|
|
|
# Example system to test that doubles as a spy.
|
|
|
|
# This class tracks calls made to it.
|
|
|
|
class SpySUT
|
|
|
|
# Number of times the `#==` method was called.
|
|
|
|
getter eq_call_count = 0
|
|
|
|
|
|
|
|
# Returns true and increments `#eq_call_count`.
|
|
|
|
def ==(other : T) forall T
|
|
|
|
@eq_call_count += 1
|
|
|
|
true
|
|
|
|
end
|
|
|
|
end
|
2018-10-20 02:30:27 +00:00
|
|
|
|
2018-10-21 14:10:59 +00:00
|
|
|
# Example that always succeeds.
|
|
|
|
class PassingExample < Spectator::RunnableExample
|
|
|
|
# Dummy description.
|
|
|
|
def what
|
|
|
|
"PASS"
|
|
|
|
end
|
|
|
|
|
|
|
|
# Run the example that always passes.
|
|
|
|
# If this doesn't something broke.
|
|
|
|
private def run_instance
|
|
|
|
report_results(1, 0)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Creates a passing example.
|
|
|
|
def self.create
|
|
|
|
hooks = Spectator::ExampleHooks.empty
|
|
|
|
group = Spectator::RootExampleGroup.new(hooks)
|
|
|
|
values = Spectator::Internals::SampleValues.empty
|
|
|
|
new(group, values).tap do |example|
|
|
|
|
group.children = [example.as(Spectator::ExampleComponent)]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Example that always fails.
|
|
|
|
class FailingExample < Spectator::RunnableExample
|
|
|
|
# Dummy description.
|
|
|
|
def what
|
|
|
|
"FAIL"
|
|
|
|
end
|
|
|
|
|
|
|
|
# Run the example that always fails.
|
|
|
|
private def run_instance
|
|
|
|
report_results(0, 1)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Creates a passing example.
|
|
|
|
def self.create
|
|
|
|
hooks = Spectator::ExampleHooks.empty
|
|
|
|
group = Spectator::RootExampleGroup.new(hooks)
|
|
|
|
values = Spectator::Internals::SampleValues.empty
|
|
|
|
new(group, values).tap do |example|
|
|
|
|
group.children = [example.as(Spectator::ExampleComponent)]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-20 02:30:27 +00:00
|
|
|
# Example that invokes a closure when it is run.
|
|
|
|
# This is useful for capturing what's going on when an event is running.
|
|
|
|
class SpyExample < Spectator::RunnableExample
|
|
|
|
# Dummy description.
|
|
|
|
def what
|
|
|
|
"SPY"
|
|
|
|
end
|
|
|
|
|
2018-11-02 02:23:28 +00:00
|
|
|
# Captures the sample values when the example is created.
|
|
|
|
def initialize(group, @sample_values)
|
|
|
|
super(group, @sample_values)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Sample values given to the example.
|
|
|
|
getter sample_values : Spectator::Internals::SampleValues
|
|
|
|
|
2018-10-20 02:30:27 +00:00
|
|
|
setter block : Proc(Nil)? = nil
|
|
|
|
|
|
|
|
# Method called by the framework to run the example code.
|
|
|
|
private def run_instance
|
|
|
|
if block = @block
|
|
|
|
block.call
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-21 04:56:24 +00:00
|
|
|
# Creates a spy example.
|
2018-10-20 02:30:27 +00:00
|
|
|
# The block passed to this method will be executed when the example runs.
|
|
|
|
def self.create(&block)
|
|
|
|
hooks = Spectator::ExampleHooks.empty
|
|
|
|
group = Spectator::RootExampleGroup.new(hooks)
|
|
|
|
values = Spectator::Internals::SampleValues.empty
|
|
|
|
new(group, values).tap do |example|
|
2018-10-21 04:56:24 +00:00
|
|
|
group.children = [example.as(Spectator::ExampleComponent)]
|
2018-10-20 02:30:27 +00:00
|
|
|
example.block = block
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|