1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
require 'cucumber/core/test/result'
require 'cucumber/core/test/action'
module Cucumber
module Core
module Test
class Step
attr_reader :source
def initialize(source, action = Test::UndefinedAction.new(source.last.location))
raise ArgumentError if source.any?(&:nil?)
@source, @action = source, action
end
def describe_to(visitor, *args)
visitor.test_step(self, *args)
end
def describe_source_to(visitor, *args)
source.reverse.each do |node|
node.describe_to(visitor, *args)
end
self
end
def skip(*args)
@action.skip(*args)
end
def execute(*args)
@action.execute(*args)
end
def with_action(location = nil, &block)
self.class.new(source, Test::Action.new(location, &block))
end
def name
source.last.name
end
def location
source.last.location
end
def action_location
@action.location
end
def inspect
"#<#{self.class}: #{location}>"
end
end
class IsStepVisitor
def initialize(test_step)
@is_step = false
test_step.describe_to(self)
end
def step?
@is_step
end
def test_step(*)
@is_step = true
end
def method_missing(*)
self
end
end
end
end
end
|