dchelimsky-rspec 1.1.11.7 → 1.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +1 -1
- data/features/support/helpers/story_helper.rb +0 -3
- data/lib/spec/example/example_group_methods.rb +1 -1
- data/lib/spec/matchers.rb +1 -1
- data/lib/spec/mocks.rb +3 -3
- data/lib/spec/mocks/argument_expectation.rb +14 -14
- data/lib/spec/mocks/framework.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +1 -1
- data/lib/spec/mocks/mock.rb +3 -4
- data/lib/spec/mocks/spec_methods.rb +10 -1
- data/lib/spec/version.rb +2 -2
- data/rspec.gemspec +3 -3
- data/spec/spec/mocks/hash_including_matcher_spec.rb +4 -4
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +3 -3
- data/spec/spec/mocks/mock_spec.rb +25 -0
- data/spec/spec/runner/reporter_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -1
- metadata +3 -3
- data/lib/spec/mocks/argument_constraints.rb +0 -237
- data/lib/spec/runner/formatter/story/html_formatter.rb +0 -174
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +0 -194
- data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +0 -42
- data/lib/spec/story.rb +0 -10
- data/lib/spec/story/extensions.rb +0 -3
- data/lib/spec/story/extensions/main.rb +0 -86
- data/lib/spec/story/extensions/regexp.rb +0 -9
- data/lib/spec/story/extensions/string.rb +0 -9
- data/lib/spec/story/given_scenario.rb +0 -14
- data/lib/spec/story/runner.rb +0 -57
- data/lib/spec/story/runner/plain_text_story_runner.rb +0 -48
- data/lib/spec/story/runner/scenario_collector.rb +0 -18
- data/lib/spec/story/runner/scenario_runner.rb +0 -54
- data/lib/spec/story/runner/story_mediator.rb +0 -137
- data/lib/spec/story/runner/story_parser.rb +0 -247
- data/lib/spec/story/runner/story_runner.rb +0 -74
- data/lib/spec/story/scenario.rb +0 -14
- data/lib/spec/story/step.rb +0 -70
- data/lib/spec/story/step_group.rb +0 -89
- data/lib/spec/story/step_mother.rb +0 -38
- data/lib/spec/story/story.rb +0 -39
- data/lib/spec/story/world.rb +0 -124
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +0 -24
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -95
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -145
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +0 -135
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +0 -600
- data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +0 -82
- data/spec/spec/story/builders.rb +0 -46
- data/spec/spec/story/extensions/main_spec.rb +0 -161
- data/spec/spec/story/extensions_spec.rb +0 -14
- data/spec/spec/story/given_scenario_spec.rb +0 -27
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +0 -90
- data/spec/spec/story/runner/scenario_collector_spec.rb +0 -27
- data/spec/spec/story/runner/scenario_runner_spec.rb +0 -214
- data/spec/spec/story/runner/story_mediator_spec.rb +0 -143
- data/spec/spec/story/runner/story_parser_spec.rb +0 -401
- data/spec/spec/story/runner/story_runner_spec.rb +0 -294
- data/spec/spec/story/runner_spec.rb +0 -93
- data/spec/spec/story/scenario_spec.rb +0 -18
- data/spec/spec/story/step_group_spec.rb +0 -157
- data/spec/spec/story/step_mother_spec.rb +0 -84
- data/spec/spec/story/step_spec.rb +0 -272
- data/spec/spec/story/story_helper.rb +0 -2
- data/spec/spec/story/story_spec.rb +0 -84
- data/spec/spec/story/world_spec.rb +0 -423
- data/story_server/prototype/javascripts/builder.js +0 -136
- data/story_server/prototype/javascripts/controls.js +0 -972
- data/story_server/prototype/javascripts/dragdrop.js +0 -976
- data/story_server/prototype/javascripts/effects.js +0 -1117
- data/story_server/prototype/javascripts/prototype.js +0 -4140
- data/story_server/prototype/javascripts/rspec.js +0 -149
- data/story_server/prototype/javascripts/scriptaculous.js +0 -58
- data/story_server/prototype/javascripts/slider.js +0 -276
- data/story_server/prototype/javascripts/sound.js +0 -55
- data/story_server/prototype/javascripts/unittest.js +0 -568
- data/story_server/prototype/lib/server.rb +0 -24
- data/story_server/prototype/stories.html +0 -176
- data/story_server/prototype/stylesheets/rspec.css +0 -136
- data/story_server/prototype/stylesheets/test.css +0 -90
@@ -1,14 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
class GivenScenario
|
4
|
-
def initialize(name)
|
5
|
-
@name = name
|
6
|
-
end
|
7
|
-
|
8
|
-
def perform(instance, ignore_name)
|
9
|
-
scenario = Runner::StoryRunner.scenario_from_current_story(@name)
|
10
|
-
Runner::ScenarioRunner.new.run(scenario, instance)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
data/lib/spec/story/runner.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec/story/runner/scenario_collector.rb'
|
2
|
-
require 'spec/story/runner/scenario_runner.rb'
|
3
|
-
require 'spec/story/runner/story_runner.rb'
|
4
|
-
require 'spec/story/runner/story_parser.rb'
|
5
|
-
require 'spec/story/runner/story_mediator.rb'
|
6
|
-
require 'spec/story/runner/plain_text_story_runner.rb'
|
7
|
-
|
8
|
-
module Spec
|
9
|
-
module Story
|
10
|
-
module Runner
|
11
|
-
def self.run_options # :nodoc:
|
12
|
-
Spec::Runner.options
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.story_runner # :nodoc:
|
16
|
-
unless @story_runner
|
17
|
-
@story_runner = create_story_runner
|
18
|
-
run_options.story_formatters.each do |formatter|
|
19
|
-
register_listener(formatter)
|
20
|
-
end
|
21
|
-
self.register_exit_hook
|
22
|
-
end
|
23
|
-
@story_runner
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.scenario_runner # :nodoc:
|
27
|
-
@scenario_runner ||= ScenarioRunner.new
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.world_creator # :nodoc:
|
31
|
-
@world_creator ||= World
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.create_story_runner
|
35
|
-
Runner::StoryRunner.new(scenario_runner, world_creator)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Use this to register a customer output formatter.
|
39
|
-
def self.register_listener(listener)
|
40
|
-
story_runner.add_listener(listener) # run_started, story_started, story_ended, #run_ended
|
41
|
-
world_creator.add_listener(listener) # found_scenario, step_succeeded, step_failed, step_failed
|
42
|
-
scenario_runner.add_listener(listener) # scenario_started, scenario_succeeded, scenario_pending, scenario_failed
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.register_exit_hook # :nodoc:
|
46
|
-
at_exit do
|
47
|
-
exit Runner.story_runner.run_stories unless $!
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.dry_run
|
52
|
-
run_options.dry_run
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
module Runner
|
4
|
-
class PlainTextStoryRunner
|
5
|
-
# You can initialize a PlainTextStoryRunner with the path to the
|
6
|
-
# story file or a block, in which you can define the path using load.
|
7
|
-
#
|
8
|
-
# == Examples
|
9
|
-
#
|
10
|
-
# PlainTextStoryRunner.new('path/to/file')
|
11
|
-
#
|
12
|
-
# PlainTextStoryRunner.new do |runner|
|
13
|
-
# runner.load 'path/to/file'
|
14
|
-
# end
|
15
|
-
def initialize(*args)
|
16
|
-
@options = Hash === args.last ? args.pop : {}
|
17
|
-
@story_file = args.empty? ? nil : args.shift
|
18
|
-
yield self if block_given?
|
19
|
-
end
|
20
|
-
|
21
|
-
def []=(key, value)
|
22
|
-
@options[key] = value
|
23
|
-
end
|
24
|
-
|
25
|
-
def load(path)
|
26
|
-
@story_file = path
|
27
|
-
end
|
28
|
-
|
29
|
-
def run(story_runner=Spec::Story::Runner.story_runner)
|
30
|
-
raise "You must set a path to the file with the story. See the RDoc." if @story_file.nil?
|
31
|
-
mediator = Spec::Story::Runner::StoryMediator.new(steps, story_runner, @options)
|
32
|
-
parser = Spec::Story::Runner::StoryParser.new(mediator)
|
33
|
-
|
34
|
-
story_text = File.read(@story_file)
|
35
|
-
parser.parse(story_text.split("\n"))
|
36
|
-
|
37
|
-
mediator.run_stories
|
38
|
-
end
|
39
|
-
|
40
|
-
def steps
|
41
|
-
@step_group ||= Spec::Story::StepGroup.new
|
42
|
-
yield @step_group if block_given?
|
43
|
-
@step_group
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
module Runner
|
4
|
-
class ScenarioCollector
|
5
|
-
attr_accessor :scenarios
|
6
|
-
|
7
|
-
def initialize(story)
|
8
|
-
@story = story
|
9
|
-
@scenarios = []
|
10
|
-
end
|
11
|
-
|
12
|
-
def Scenario(name, &body)
|
13
|
-
@scenarios << Scenario.new(@story, name, &body)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
module Runner
|
4
|
-
class ScenarioRunner
|
5
|
-
def initialize
|
6
|
-
@listeners = []
|
7
|
-
end
|
8
|
-
|
9
|
-
def run(scenario, world)
|
10
|
-
@listeners.each { |l| l.scenario_started(scenario.story.title, scenario.name) }
|
11
|
-
run_story_ignoring_scenarios(scenario.story, world)
|
12
|
-
|
13
|
-
world.start_collecting_errors
|
14
|
-
|
15
|
-
unless scenario.body
|
16
|
-
@listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, '') }
|
17
|
-
return true
|
18
|
-
end
|
19
|
-
|
20
|
-
world.instance_eval(&scenario.body)
|
21
|
-
if world.errors.empty?
|
22
|
-
@listeners.each { |l| l.scenario_succeeded(scenario.story.title, scenario.name) }
|
23
|
-
else
|
24
|
-
if Spec::Example::ExamplePendingError === (e = world.errors.first)
|
25
|
-
@listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, e.message) }
|
26
|
-
else
|
27
|
-
@listeners.each { |l| l.scenario_failed(scenario.story.title, scenario.name, e) }
|
28
|
-
return false
|
29
|
-
end
|
30
|
-
end
|
31
|
-
true
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_listener(listener)
|
35
|
-
@listeners << listener
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def run_story_ignoring_scenarios(story, world)
|
41
|
-
class << world
|
42
|
-
def Scenario(name, &block)
|
43
|
-
# do nothing
|
44
|
-
end
|
45
|
-
end
|
46
|
-
story.run_in(world)
|
47
|
-
class << world
|
48
|
-
remove_method(:Scenario)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,137 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
module Runner
|
4
|
-
|
5
|
-
class StoryMediator
|
6
|
-
def initialize(step_group, runner, options={})
|
7
|
-
@step_group = step_group
|
8
|
-
@stories = []
|
9
|
-
@runner = runner
|
10
|
-
@options = options
|
11
|
-
end
|
12
|
-
|
13
|
-
def stories
|
14
|
-
@stories.collect { |p| p.to_proc }
|
15
|
-
end
|
16
|
-
|
17
|
-
def create_story(title, narrative)
|
18
|
-
@stories << Story.new(title, narrative, @step_group, @options)
|
19
|
-
end
|
20
|
-
|
21
|
-
def create_scenario(title)
|
22
|
-
current_story.add_scenario Scenario.new(title)
|
23
|
-
end
|
24
|
-
|
25
|
-
def create_given(name)
|
26
|
-
current_scenario.add_step Step.new('Given', name)
|
27
|
-
end
|
28
|
-
|
29
|
-
def create_given_scenario(name)
|
30
|
-
current_scenario.add_step Step.new('GivenScenario', name)
|
31
|
-
end
|
32
|
-
|
33
|
-
def create_when(name)
|
34
|
-
current_scenario.add_step Step.new('When', name)
|
35
|
-
end
|
36
|
-
|
37
|
-
def create_then(name)
|
38
|
-
current_scenario.add_step Step.new('Then', name)
|
39
|
-
end
|
40
|
-
|
41
|
-
def last_step
|
42
|
-
current_scenario.last_step
|
43
|
-
end
|
44
|
-
|
45
|
-
def add_to_last(name)
|
46
|
-
last_step.name << name
|
47
|
-
end
|
48
|
-
|
49
|
-
def run_stories
|
50
|
-
stories.each { |story| @runner.instance_eval(&story) }
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
def current_story
|
55
|
-
@stories.last
|
56
|
-
end
|
57
|
-
|
58
|
-
def current_scenario
|
59
|
-
current_story.current_scenario
|
60
|
-
end
|
61
|
-
|
62
|
-
class Story
|
63
|
-
def initialize(title, narrative, step_group, options)
|
64
|
-
@title = title
|
65
|
-
@narrative = narrative
|
66
|
-
@scenarios = []
|
67
|
-
@step_group = step_group
|
68
|
-
@options = options
|
69
|
-
end
|
70
|
-
|
71
|
-
def to_proc
|
72
|
-
title = @title
|
73
|
-
narrative = @narrative
|
74
|
-
scenarios = @scenarios.collect { |scenario| scenario.to_proc }
|
75
|
-
options = @options.merge(:steps_for => @step_group)
|
76
|
-
lambda do
|
77
|
-
Story title, narrative, options do
|
78
|
-
scenarios.each { |scenario| instance_eval(&scenario) }
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def add_scenario(scenario)
|
84
|
-
@scenarios << scenario
|
85
|
-
end
|
86
|
-
|
87
|
-
def current_scenario
|
88
|
-
@scenarios.last
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
class Scenario
|
93
|
-
def initialize(name)
|
94
|
-
@name = name
|
95
|
-
@steps = []
|
96
|
-
end
|
97
|
-
|
98
|
-
def to_proc
|
99
|
-
name = @name
|
100
|
-
steps = @steps.collect { |step| step.to_proc }
|
101
|
-
lambda do
|
102
|
-
Scenario name do
|
103
|
-
steps.each { |step| instance_eval(&step) }
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def add_step(step)
|
109
|
-
@steps << step
|
110
|
-
end
|
111
|
-
|
112
|
-
def last_step
|
113
|
-
@steps.last
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
class Step
|
118
|
-
attr_reader :name
|
119
|
-
|
120
|
-
def initialize(type, name)
|
121
|
-
@type = type
|
122
|
-
@name = name
|
123
|
-
end
|
124
|
-
|
125
|
-
def to_proc
|
126
|
-
type = @type
|
127
|
-
name = @name
|
128
|
-
lambda do
|
129
|
-
send(type, name)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
@@ -1,247 +0,0 @@
|
|
1
|
-
module Spec
|
2
|
-
module Story
|
3
|
-
module Runner
|
4
|
-
|
5
|
-
class IllegalStepError < StandardError
|
6
|
-
def initialize(state, event)
|
7
|
-
super("Illegal attempt to create a #{event} after a #{state}")
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class StoryParser
|
12
|
-
def initialize(story_mediator)
|
13
|
-
@story_mediator = story_mediator
|
14
|
-
@current_story_lines = []
|
15
|
-
transition_to(:starting_state)
|
16
|
-
end
|
17
|
-
|
18
|
-
def parse(lines)
|
19
|
-
lines.reject! {|line| line == ""}
|
20
|
-
until lines.empty?
|
21
|
-
process_line(lines.shift)
|
22
|
-
end
|
23
|
-
@state.eof
|
24
|
-
end
|
25
|
-
|
26
|
-
def process_line(line)
|
27
|
-
line.strip!
|
28
|
-
case line
|
29
|
-
when /^#/ then @state.comment(line)
|
30
|
-
when /^Story: / then @state.story(line)
|
31
|
-
when /^Scenario: / then @state.scenario(line)
|
32
|
-
when /^Given:? / then @state.given(line)
|
33
|
-
when /^GivenScenario:? / then @state.given_scenario(line)
|
34
|
-
when /^When:? / then @state.event(line)
|
35
|
-
when /^Then:? / then @state.outcome(line)
|
36
|
-
when /^And:? / then @state.one_more_of_the_same(line)
|
37
|
-
else @state.other(line)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def init_story(title)
|
42
|
-
@current_story_lines.clear
|
43
|
-
add_story_line(title)
|
44
|
-
end
|
45
|
-
|
46
|
-
def add_story_line(line)
|
47
|
-
@current_story_lines << line
|
48
|
-
end
|
49
|
-
|
50
|
-
def create_story()
|
51
|
-
unless @current_story_lines.empty?
|
52
|
-
@story_mediator.create_story(@current_story_lines[0].gsub("Story: ",""), @current_story_lines[1..-1].join("\n"))
|
53
|
-
@current_story_lines.clear
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def create_scenario(title)
|
58
|
-
@story_mediator.create_scenario(title.gsub("Scenario: ",""))
|
59
|
-
end
|
60
|
-
|
61
|
-
def create_given(name)
|
62
|
-
@story_mediator.create_given(name)
|
63
|
-
end
|
64
|
-
|
65
|
-
def create_given_scenario(name)
|
66
|
-
@story_mediator.create_given_scenario(name)
|
67
|
-
end
|
68
|
-
|
69
|
-
def create_when(name)
|
70
|
-
@story_mediator.create_when(name)
|
71
|
-
end
|
72
|
-
|
73
|
-
def create_then(name)
|
74
|
-
@story_mediator.create_then(name)
|
75
|
-
end
|
76
|
-
|
77
|
-
def add_to_last(line)
|
78
|
-
@story_mediator.add_to_last("\n#{line}")
|
79
|
-
end
|
80
|
-
|
81
|
-
def transition_to(key)
|
82
|
-
@state = states[key]
|
83
|
-
end
|
84
|
-
|
85
|
-
def states
|
86
|
-
@states ||= {
|
87
|
-
:starting_state => StartingState.new(self),
|
88
|
-
:story_state => StoryState.new(self),
|
89
|
-
:scenario_state => ScenarioState.new(self),
|
90
|
-
:given_state => GivenState.new(self),
|
91
|
-
:when_state => WhenState.new(self),
|
92
|
-
:then_state => ThenState.new(self)
|
93
|
-
}
|
94
|
-
end
|
95
|
-
|
96
|
-
class State
|
97
|
-
def initialize(parser)
|
98
|
-
@parser = parser
|
99
|
-
end
|
100
|
-
|
101
|
-
def story(line)
|
102
|
-
@parser.init_story(line)
|
103
|
-
@parser.transition_to(:story_state)
|
104
|
-
end
|
105
|
-
|
106
|
-
def scenario(line)
|
107
|
-
@parser.create_scenario(line)
|
108
|
-
@parser.transition_to(:scenario_state)
|
109
|
-
end
|
110
|
-
|
111
|
-
def given(line)
|
112
|
-
@parser.create_given(remove_tag_from(:given, line))
|
113
|
-
@parser.transition_to(:given_state)
|
114
|
-
end
|
115
|
-
|
116
|
-
def given_scenario(line)
|
117
|
-
@parser.create_given_scenario(remove_tag_from(:givenscenario, line))
|
118
|
-
@parser.transition_to(:given_state)
|
119
|
-
end
|
120
|
-
|
121
|
-
def event(line)
|
122
|
-
@parser.create_when(remove_tag_from(:when, line))
|
123
|
-
@parser.transition_to(:when_state)
|
124
|
-
end
|
125
|
-
|
126
|
-
def outcome(line)
|
127
|
-
@parser.create_then(remove_tag_from(:then, line))
|
128
|
-
@parser.transition_to(:then_state)
|
129
|
-
end
|
130
|
-
|
131
|
-
def remove_tag_from(tag, line)
|
132
|
-
tokens = line.split
|
133
|
-
# validation of tag can go here
|
134
|
-
tokens[0].downcase.match(/#{tag.to_s}:?/) ?
|
135
|
-
(tokens[1..-1].join(' ')) : line
|
136
|
-
end
|
137
|
-
|
138
|
-
def eof
|
139
|
-
end
|
140
|
-
|
141
|
-
def other(line)
|
142
|
-
# no-op - supports header text before the first story in a file
|
143
|
-
end
|
144
|
-
|
145
|
-
def comment(line)
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
class StartingState < State
|
150
|
-
def initialize(parser)
|
151
|
-
@parser = parser
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
class StoryState < State
|
156
|
-
def one_more_of_the_same(line)
|
157
|
-
other(line)
|
158
|
-
end
|
159
|
-
|
160
|
-
def story(line)
|
161
|
-
@parser.create_story
|
162
|
-
@parser.add_story_line(line)
|
163
|
-
end
|
164
|
-
|
165
|
-
def scenario(line)
|
166
|
-
@parser.create_story
|
167
|
-
@parser.create_scenario(line)
|
168
|
-
@parser.transition_to(:scenario_state)
|
169
|
-
end
|
170
|
-
|
171
|
-
def given(line)
|
172
|
-
other(line)
|
173
|
-
end
|
174
|
-
|
175
|
-
def event(line)
|
176
|
-
other(line)
|
177
|
-
end
|
178
|
-
|
179
|
-
def outcome(line)
|
180
|
-
other(line)
|
181
|
-
end
|
182
|
-
|
183
|
-
def other(line)
|
184
|
-
@parser.add_story_line(line)
|
185
|
-
end
|
186
|
-
|
187
|
-
def eof
|
188
|
-
@parser.create_story
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
class ScenarioState < State
|
193
|
-
def one_more_of_the_same(line)
|
194
|
-
raise IllegalStepError.new("Scenario", "And")
|
195
|
-
end
|
196
|
-
|
197
|
-
def scenario(line)
|
198
|
-
@parser.create_scenario(line)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
class GivenState < State
|
203
|
-
def one_more_of_the_same(line)
|
204
|
-
@parser.create_given(remove_tag_from(:and, line))
|
205
|
-
end
|
206
|
-
|
207
|
-
def given(line)
|
208
|
-
@parser.create_given(remove_tag_from(:given, line))
|
209
|
-
end
|
210
|
-
|
211
|
-
def other(line)
|
212
|
-
@parser.add_to_last(line)
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
216
|
-
class WhenState < State
|
217
|
-
def one_more_of_the_same(line)
|
218
|
-
@parser.create_when(remove_tag_from(:and ,line))
|
219
|
-
end
|
220
|
-
|
221
|
-
def event(line)
|
222
|
-
@parser.create_when(remove_tag_from(:when ,line))
|
223
|
-
end
|
224
|
-
|
225
|
-
def other(line)
|
226
|
-
@parser.add_to_last(line)
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
class ThenState < State
|
231
|
-
def one_more_of_the_same(line)
|
232
|
-
@parser.create_then(remove_tag_from(:and ,line))
|
233
|
-
end
|
234
|
-
|
235
|
-
def outcome(line)
|
236
|
-
@parser.create_then(remove_tag_from(:then ,line))
|
237
|
-
end
|
238
|
-
|
239
|
-
def other(line)
|
240
|
-
@parser.add_to_last(line)
|
241
|
-
end
|
242
|
-
end
|
243
|
-
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|