Class: Cucumber::Core::Test::Case

Inherits:
Object
  • Object
show all
Defined in:
lib/cucumber/core/test/case.rb

Defined Under Namespace

Classes: NameBuilder, TagCollector

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(test_steps, source, around_hooks = []) ⇒ Case

Returns a new instance of Case.

Raises:

  • (ArgumentError)


13
14
15
16
17
18
# File 'lib/cucumber/core/test/case.rb', line 13

def initialize(test_steps, source, around_hooks = [])
  raise ArgumentError.new("test_steps should be an Array but is a #{test_steps.class}") unless test_steps.kind_of?(Array)
  @test_steps = test_steps
  @source = source
  @around_hooks = around_hooks
end

Instance Attribute Details

#around_hooksObject (readonly)

Returns the value of attribute around_hooks.



11
12
13
# File 'lib/cucumber/core/test/case.rb', line 11

def around_hooks
  @around_hooks
end

#sourceObject (readonly)

Returns the value of attribute source.



11
12
13
# File 'lib/cucumber/core/test/case.rb', line 11

def source
  @source
end

#test_stepsObject (readonly)

Returns the value of attribute test_steps.



11
12
13
# File 'lib/cucumber/core/test/case.rb', line 11

def test_steps
  @test_steps
end

Instance Method Details

#==(other) ⇒ Object



112
113
114
# File 'lib/cucumber/core/test/case.rb', line 112

def ==(other)
  eql?(other)
end

#all_locationsObject



88
89
90
# File 'lib/cucumber/core/test/case.rb', line 88

def all_locations
  @all_locations ||= Ast::Location.merge(all_source.map(&:all_locations).flatten)
end

#all_sourceObject



92
93
94
# File 'lib/cucumber/core/test/case.rb', line 92

def all_source
  @all_source ||= (source + test_steps.map(&:source)).flatten.uniq
end

#describe_source_to(visitor, *args) ⇒ Object



35
36
37
38
39
40
# File 'lib/cucumber/core/test/case.rb', line 35

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

#describe_to(visitor, *args) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/cucumber/core/test/case.rb', line 24

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

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/cucumber/core/test/case.rb', line 108

def eql?(other)
  other.hash == hash
end

#featureObject



100
101
102
# File 'lib/cucumber/core/test/case.rb', line 100

def feature
  source.first
end

#hashObject



104
105
106
# File 'lib/cucumber/core/test/case.rb', line 104

def hash
  location.hash
end

#inspectObject



96
97
98
# File 'lib/cucumber/core/test/case.rb', line 96

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

#keywordObject



54
55
56
# File 'lib/cucumber/core/test/case.rb', line 54

def keyword
  @keyword ||= NameBuilder.new(self).keyword
end

#languageObject



70
71
72
# File 'lib/cucumber/core/test/case.rb', line 70

def language
  feature.language
end

#locationObject



74
75
76
# File 'lib/cucumber/core/test/case.rb', line 74

def location
  source.last.location
end

#match_locations?(queried_locations) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
81
82
83
84
85
86
# File 'lib/cucumber/core/test/case.rb', line 78

def match_locations?(queried_locations)
  queried_locations.any? { |queried_location|
    all_source.any? { |node|
      node.all_locations.any? { |location|
        queried_location.match? location
      }
    }
  }
end

#match_name?(name_regexp) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/cucumber/core/test/case.rb', line 66

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

#match_tags?(*expressions) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/cucumber/core/test/case.rb', line 62

def match_tags?(*expressions)
  expressions.flatten.all? { |expression| match_single_tag_expression?(expression) }
end

#nameObject



50
51
52
# File 'lib/cucumber/core/test/case.rb', line 50

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

#step_countObject



20
21
22
# File 'lib/cucumber/core/test/case.rb', line 20

def step_count
  test_steps.count
end

#tagsObject



58
59
60
# File 'lib/cucumber/core/test/case.rb', line 58

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

#with_around_hooks(around_hooks) ⇒ Object



46
47
48
# File 'lib/cucumber/core/test/case.rb', line 46

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

#with_steps(test_steps) ⇒ Object



42
43
44
# File 'lib/cucumber/core/test/case.rb', line 42

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