finite_machine 0.12.1 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -1
- data/README.md +1 -1
- data/lib/finite_machine.rb +3 -1
- data/lib/finite_machine/choice_merger.rb +2 -2
- data/lib/finite_machine/dsl.rb +4 -4
- data/lib/finite_machine/message_queue.rb +0 -1
- data/lib/finite_machine/state_machine.rb +3 -3
- data/lib/finite_machine/two_phase_lock.rb +6 -6
- data/lib/finite_machine/version.rb +1 -1
- metadata +20 -146
- data/Rakefile +0 -12
- data/benchmarks/memory_profile.rb +0 -11
- data/benchmarks/memory_usage.rb +0 -28
- data/examples/atm.rb +0 -45
- data/examples/bug_system.rb +0 -145
- data/finite_machine.gemspec +0 -30
- data/spec/integration/system_spec.rb +0 -93
- data/spec/performance/benchmark_spec.rb +0 -54
- data/spec/spec_helper.rb +0 -34
- data/spec/unit/alias_target_spec.rb +0 -89
- data/spec/unit/async_callbacks_spec.rb +0 -28
- data/spec/unit/auto_methods_spec.rb +0 -44
- data/spec/unit/callable/call_spec.rb +0 -111
- data/spec/unit/callbacks_spec.rb +0 -851
- data/spec/unit/can_spec.rb +0 -88
- data/spec/unit/cancel_callbacks_spec.rb +0 -46
- data/spec/unit/choice_spec.rb +0 -295
- data/spec/unit/define_spec.rb +0 -55
- data/spec/unit/definition_spec.rb +0 -98
- data/spec/unit/event_names_spec.rb +0 -15
- data/spec/unit/events_map/add_spec.rb +0 -23
- data/spec/unit/events_map/choice_transition_spec.rb +0 -25
- data/spec/unit/events_map/clear_spec.rb +0 -13
- data/spec/unit/events_map/events_spec.rb +0 -16
- data/spec/unit/events_map/inspect_spec.rb +0 -22
- data/spec/unit/events_map/match_transition_spec.rb +0 -35
- data/spec/unit/events_map/move_to_spec.rb +0 -45
- data/spec/unit/events_map/states_for_spec.rb +0 -17
- data/spec/unit/events_spec.rb +0 -390
- data/spec/unit/handlers_spec.rb +0 -120
- data/spec/unit/hook_event/any_state_or_event_spec.rb +0 -13
- data/spec/unit/hook_event/build_spec.rb +0 -13
- data/spec/unit/hook_event/eql_spec.rb +0 -34
- data/spec/unit/hook_event/initialize_spec.rb +0 -23
- data/spec/unit/hook_event/notify_spec.rb +0 -12
- data/spec/unit/hooks/clear_spec.rb +0 -16
- data/spec/unit/hooks/find_spec.rb +0 -19
- data/spec/unit/hooks/inspect_spec.rb +0 -25
- data/spec/unit/hooks/register_spec.rb +0 -17
- data/spec/unit/if_unless_spec.rb +0 -314
- data/spec/unit/initial_spec.rb +0 -190
- data/spec/unit/inspect_spec.rb +0 -22
- data/spec/unit/is_spec.rb +0 -49
- data/spec/unit/log_transitions_spec.rb +0 -24
- data/spec/unit/logger_spec.rb +0 -36
- data/spec/unit/message_queue_spec.rb +0 -62
- data/spec/unit/new_spec.rb +0 -50
- data/spec/unit/respond_to_spec.rb +0 -34
- data/spec/unit/state_parser/parse_spec.rb +0 -56
- data/spec/unit/states_spec.rb +0 -28
- data/spec/unit/subscribers_spec.rb +0 -40
- data/spec/unit/target_spec.rb +0 -225
- data/spec/unit/terminated_spec.rb +0 -85
- data/spec/unit/transition/check_conditions_spec.rb +0 -55
- data/spec/unit/transition/inspect_spec.rb +0 -25
- data/spec/unit/transition/matches_spec.rb +0 -21
- data/spec/unit/transition/states_spec.rb +0 -29
- data/spec/unit/transition/to_state_spec.rb +0 -19
- data/spec/unit/trigger_spec.rb +0 -18
- data/spec/unit/undefined_transition/eql_spec.rb +0 -15
- data/tasks/console.rake +0 -11
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -34
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe FiniteMachine::Transition, '#inspect' do
|
4
|
-
let(:machine) { double(:machine) }
|
5
|
-
|
6
|
-
subject(:transition) { described_class.new(machine, event_name, attrs) }
|
7
|
-
|
8
|
-
context 'when inspecting' do
|
9
|
-
let(:event_name) { :start }
|
10
|
-
let(:attrs) { { states: { :foo => :bar, :baz => :daz } } }
|
11
|
-
|
12
|
-
it "displays name and transitions" do
|
13
|
-
expect(transition.inspect).to eql("<#FiniteMachine::Transition @name=start, @transitions=foo -> bar, baz -> daz, @when=[]>")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'when converting to string' do
|
18
|
-
let(:event_name) { :start }
|
19
|
-
let(:attrs) { { states: { :foo => :bar } } }
|
20
|
-
|
21
|
-
it "displays name and transitions" do
|
22
|
-
expect(transition.to_s).to eql("start")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe FiniteMachine::Transition, '#matches?' do
|
4
|
-
let(:machine) { double(:machine) }
|
5
|
-
|
6
|
-
it "matches from state" do
|
7
|
-
states = {:green => :red}
|
8
|
-
transition = described_class.new(machine, :event_name, states: states)
|
9
|
-
|
10
|
-
expect(transition.matches?(:green)).to eq(true)
|
11
|
-
expect(transition.matches?(:red)).to eq(false)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "matches any state" do
|
15
|
-
states = {FiniteMachine::ANY_STATE => :red}
|
16
|
-
transition = described_class.new(machine, :event_name, states: states)
|
17
|
-
|
18
|
-
expect(transition.matches?(:green)).to eq(true)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe FiniteMachine::Transition, '#states' do
|
4
|
-
let(:machine) { double(:machine) }
|
5
|
-
|
6
|
-
it "groups states with :to key only" do
|
7
|
-
attrs = {states: {:any => :red}}
|
8
|
-
transition = FiniteMachine::Transition.new(machine, :event_name, attrs)
|
9
|
-
expect(transition.states).to eql({any: :red})
|
10
|
-
end
|
11
|
-
|
12
|
-
it "groups states when from array" do
|
13
|
-
attrs = {states: { :green => :red, :yellow => :red}}
|
14
|
-
transition = FiniteMachine::Transition.new(machine, :event_name, attrs)
|
15
|
-
expect(transition.states.keys).to match_array([:green, :yellow])
|
16
|
-
expect(transition.states.values).to eql([:red, :red])
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
it "groups states when hash of states" do
|
21
|
-
attrs = {states: {
|
22
|
-
:initial => :low,
|
23
|
-
:low => :medium,
|
24
|
-
:medium => :high }}
|
25
|
-
transition = FiniteMachine::Transition.new(machine, :event_name, attrs)
|
26
|
-
expect(transition.states.keys).to match_array([:initial, :low, :medium])
|
27
|
-
expect(transition.states.values).to eql([:low, :medium, :high])
|
28
|
-
end
|
29
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe FiniteMachine::Transition, '#to_state' do
|
4
|
-
let(:machine) { double(:machine) }
|
5
|
-
|
6
|
-
it "finds to state" do
|
7
|
-
states = {:green => :red}
|
8
|
-
transition = described_class.new(machine, :event_name, states: states)
|
9
|
-
|
10
|
-
expect(transition.to_state(:green)).to eq(:red)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "finds to state for transition from any state" do
|
14
|
-
states = {FiniteMachine::ANY_STATE => :red}
|
15
|
-
transition = described_class.new(machine, :event_name, states: states)
|
16
|
-
|
17
|
-
expect(transition.to_state(:green)).to eq(:red)
|
18
|
-
end
|
19
|
-
end
|
data/spec/unit/trigger_spec.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe FiniteMachine::StateMachine, '#trigger' do
|
4
|
-
it "triggers event manually" do
|
5
|
-
called = []
|
6
|
-
fsm = FiniteMachine.new do
|
7
|
-
initial :red
|
8
|
-
|
9
|
-
event :start, :red => :green, if: proc { |_, name| called << name; true }
|
10
|
-
event :stop, :green => :red
|
11
|
-
end
|
12
|
-
|
13
|
-
expect(fsm.current).to eq(:red)
|
14
|
-
fsm.trigger(:start, 'Piotr')
|
15
|
-
expect(fsm.current).to eq(:green)
|
16
|
-
expect(called).to eq(['Piotr'])
|
17
|
-
end
|
18
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe FiniteMachine::UndefinedTransition, '#==' do
|
4
|
-
it "is true with the same name" do
|
5
|
-
expect(described_class.new(:go)).to eq(described_class.new(:go))
|
6
|
-
end
|
7
|
-
|
8
|
-
it "is false with a different name" do
|
9
|
-
expect(described_class.new(:go)).to_not eq(described_class.new(:other))
|
10
|
-
end
|
11
|
-
|
12
|
-
it "is false with another object" do
|
13
|
-
expect(described_class.new(:go)).to_not eq(:other)
|
14
|
-
end
|
15
|
-
end
|
data/tasks/console.rake
DELETED
data/tasks/coverage.rake
DELETED
data/tasks/spec.rake
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'rspec/core/rake_task'
|
5
|
-
|
6
|
-
desc 'Run all specs'
|
7
|
-
RSpec::Core::RakeTask.new(:spec) do |task|
|
8
|
-
task.pattern = 'spec/{unit,integration}{,/*/**}/*_spec.rb'
|
9
|
-
end
|
10
|
-
|
11
|
-
namespace :spec do
|
12
|
-
desc 'Run unit specs'
|
13
|
-
RSpec::Core::RakeTask.new(:unit) do |task|
|
14
|
-
task.pattern = 'spec/unit{,/*/**}/*_spec.rb'
|
15
|
-
end
|
16
|
-
|
17
|
-
desc 'Run integration specs'
|
18
|
-
RSpec::Core::RakeTask.new(:integration) do |task|
|
19
|
-
task.pattern = 'spec/integration{,/*/**}/*_spec.rb'
|
20
|
-
end
|
21
|
-
|
22
|
-
desc 'Run performance specs'
|
23
|
-
RSpec::Core::RakeTask.new(:perf) do |task|
|
24
|
-
task.pattern = 'spec/performance{,/*/**}/*_spec.rb'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
rescue LoadError
|
29
|
-
%w[spec spec:unit spec:integration].each do |name|
|
30
|
-
task name do
|
31
|
-
$stderr.puts "In order to run #{name}, do `gem install rspec`"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|