Class: Cucumber::Core::Test::Case
- Inherits:
-
Object
- Object
- Cucumber::Core::Test::Case
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.
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_hooks ⇒ Object
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
|
#source ⇒ Object
Returns the value of attribute source.
11
12
13
|
# File 'lib/cucumber/core/test/case.rb', line 11
def source
@source
end
|
#test_steps ⇒ Object
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_locations ⇒ Object
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_source ⇒ Object
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
108
109
110
|
# File 'lib/cucumber/core/test/case.rb', line 108
def eql?(other)
other.hash == hash
end
|
#feature ⇒ Object
100
101
102
|
# File 'lib/cucumber/core/test/case.rb', line 100
def feature
source.first
end
|
#hash ⇒ Object
104
105
106
|
# File 'lib/cucumber/core/test/case.rb', line 104
def hash
location.hash
end
|
#inspect ⇒ Object
96
97
98
|
# File 'lib/cucumber/core/test/case.rb', line 96
def inspect
"#<#{self.class}: #{location}>"
end
|
#keyword ⇒ Object
54
55
56
|
# File 'lib/cucumber/core/test/case.rb', line 54
def keyword
@keyword ||= NameBuilder.new(self).keyword
end
|
#language ⇒ Object
70
71
72
|
# File 'lib/cucumber/core/test/case.rb', line 70
def language
feature.language
end
|
#location ⇒ Object
74
75
76
|
# File 'lib/cucumber/core/test/case.rb', line 74
def location
source.last.location
end
|
#match_locations?(queried_locations) ⇒ 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
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
|
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
|
#name ⇒ Object
50
51
52
|
# File 'lib/cucumber/core/test/case.rb', line 50
def name
@name ||= NameBuilder.new(self).result
end
|
#step_count ⇒ Object
20
21
22
|
# File 'lib/cucumber/core/test/case.rb', line 20
def step_count
test_steps.count
end
|
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
|