Module: Foobara::StateMachine::Validations::ClassMethods

Defined in:
foobara-0.0.110/projects/state_machine/src/validations.rb

Instance Method Summary collapse

Instance Method Details

#validate_states(computed_states) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'foobara-0.0.110/projects/state_machine/src/validations.rb', line 34

def validate_states(computed_states)
  missing_states = states - computed_states

  unless missing_states.empty?
    raise MissingStates,
          "#{missing_states} is/are explicitly declared as states but do(es)n't appear in the transition map"
  end

  extra_states = computed_states - states

  unless extra_states.empty?
    raise ExtraStates,
          "#{extra_states} appeared in the transition map but were not explicitly declared as states"
  end
end

#validate_terminal_states(computed_terminal_states, all_states) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'foobara-0.0.110/projects/state_machine/src/validations.rb', line 14

def validate_terminal_states(computed_terminal_states, all_states)
  unexpected_terminal_states = computed_terminal_states - terminal_states

  unless unexpected_terminal_states.empty?
    raise UnexpectedTerminalStates, "#{
    unexpected_terminal_states
  } do(es) not have transitions even though they are not in the explicit list of terminal states #{
    terminal_states
  }"
  end

  missing_terminal_states = terminal_states - all_states

  unless missing_terminal_states.empty?
    raise MissingTerminalStates, "#{
    missing_terminal_states
  } was/were included explicitly in terminal_states but didn't appear in the transition map"
  end
end

#validate_transitions(computed_transitions) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'foobara-0.0.110/projects/state_machine/src/validations.rb', line 50

def validate_transitions(computed_transitions)
  missing_transitions = transitions - computed_transitions

  unless missing_transitions.empty?
    raise MissingTransitions, "#{
    missing_transitions
  } is/are explicitly declared as transitions but do(es)n't appear in the transition map"
  end

  extra_transitions = computed_transitions - transitions

  unless extra_transitions.empty?
    raise ExtraTransitions,
          "#{extra_transitions} appeared in the transition map but were not explicitly declared as transitions"
  end
end