class StateMachineChecker::Adapters::StateMachines

An adapter for the state_machines gem.

Attributes

gem_machine[R]

Public Class Methods

new(gem_machine) click to toggle source

@param [StateMachines::Machine] gem_machine

# File lib/state_machine_checker/adapters/state_machines.rb, line 8
def initialize(gem_machine)
  @gem_machine = gem_machine
end

Public Instance Methods

initial_state() click to toggle source
# File lib/state_machine_checker/adapters/state_machines.rb, line 12
def initial_state
  # StateMachines::Machine#initial_state takes an instance as a parameter,
  # even when the initial state is set statically. We are assuming that
  # it is always set statically.
  # TODO: could get this by `gem_machine.states.find(&:initial)`
  gem_machine.instance_variable_get(:@initial_state)
end
transitions() click to toggle source
# File lib/state_machine_checker/adapters/state_machines.rb, line 20
def transitions
  gem_machine.events.flat_map { |event|
    event.branches.flat_map { |branch|
      branch.state_requirements.flat_map { |state_requirement|
        froms = state_requirement[:from].values
        tos = state_requirement[:to].values

        froms.product(tos).map { |from, to|
          Transition.new(from, to, event.name)
        }
      }
    }
  }
end