class Cucumber::Core::Test::Case

def compose_around_hooks(visitor, *args, &block)

def compose_around_hooks(visitor, *args, &block)
  around_hooks.reverse.reduce(block) do |continue, hook|
    -> { hook.describe_to(visitor, *args, &continue) }
  end.call
end

def describe_source_to(visitor, *args)

def describe_source_to(visitor, *args)
  source.reverse.each do |node|
    node.describe_to(visitor, *args)
  end
  self
end

def describe_to(visitor, *args)

def describe_to(visitor, *args)
  visitor.test_case(self, *args) do |child_visitor|
    compose_around_hooks(child_visitor, *args) do
      test_steps.each do |test_step|
        test_step.describe_to(child_visitor, *args)
      end
    end
  end
  self
end

def feature

def feature
  source.first
end

def initialize(test_steps, source, around_hooks = [])

def initialize(test_steps, source, around_hooks = [])
  super(test_steps, source, around_hooks)
end

def inspect

def inspect
  "<#{self.class}: #{location}>"
end

def language

def language
  feature.language
end

def location

def location
  source.last.location
end

def match_locations?(queried_locations)

def match_locations?(queried_locations)
  return true if source.any? { |s| s.match_locations?(queried_locations) }
  test_steps.any? { |node| node.match_locations? queried_locations }
end

def match_name?(name_regexp)

def match_name?(name_regexp)
  source.any? { |node| node.respond_to?(:name) && node.name =~ name_regexp }
end

def match_tags?(*expressions)

def match_tags?(*expressions)
  ::Gherkin::TagExpression.new(expressions.flatten).evaluate(tags.map {|t| ::Gherkin::Formatter::Model::Tag.new(t.name, t.line) })
end

def name

def name
  @name ||= NameBuilder.new(self).result
end

def step_count

def step_count
  test_steps.count
end

def tags

def tags
  @tags ||= TagCollector.new(self).result
end

def with_around_hooks(around_hooks)

def with_around_hooks(around_hooks)
  self.class.new(test_steps, source, around_hooks)
end

def with_steps(test_steps)

def with_steps(test_steps)
  self.class.new(test_steps, source, around_hooks)
end