class MachineWithInstanceHelpersTest

Public Instance Methods

park() click to toggle source
# File test/unit/machine_test.rb, line 1084
def park
  true
end
setup() click to toggle source
# File test/unit/machine_test.rb, line 1076
def setup
  @klass = Class.new
  @machine = StateMachine::Machine.new(@klass)
  @object = @klass.new
end
test_should_allow_string_evaluation() click to toggle source
# File test/unit/machine_test.rb, line 1248
  def test_should_allow_string_evaluation
    @machine.define_helper :instance, "      def park
        false
      end
", __FILE__, __LINE__ + 1
    assert_equal false, @object.park
  end
test_should_define_if_ignoring_method_conflicts_and_defined_in_superclass() click to toggle source
# File test/unit/machine_test.rb, line 1195
def test_should_define_if_ignoring_method_conflicts_and_defined_in_superclass
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  StateMachine::Machine.ignore_method_conflicts = true
  
  superclass = Class.new do
    def park
    end
  end
  klass = Class.new(superclass)
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:instance, :park) {true}
  assert_equal '', $stderr.string
  assert_equal true, klass.new.park
ensure
  StateMachine::Machine.ignore_method_conflicts = false
  $stderr = @original_stderr
end
test_should_define_nonexistent_methods() click to toggle source
# File test/unit/machine_test.rb, line 1215
def test_should_define_nonexistent_methods
  @machine.define_helper(:instance, :park) {false}
  assert_equal false, @object.park
end
test_should_not_redefine_existing_private_methods() click to toggle source
# File test/unit/machine_test.rb, line 1105
def test_should_not_redefine_existing_private_methods
  @klass.class_eval do
    private
      def park
        true
      end
  end
  
  @machine.define_helper(:instance, :park) {}
  assert_equal true, @object.send(:park)
end
test_should_not_redefine_existing_protected_methods() click to toggle source
# File test/unit/machine_test.rb, line 1093
def test_should_not_redefine_existing_protected_methods
  @klass.class_eval do
    protected
      def park
        true
      end
  end
  
  @machine.define_helper(:instance, :park) {}
  assert_equal true, @object.send(:park)
end
test_should_not_redefine_existing_public_methods() click to toggle source
# File test/unit/machine_test.rb, line 1082
def test_should_not_redefine_existing_public_methods
  @klass.class_eval do
    def park
      true
    end
  end
  
  @machine.define_helper(:instance, :park) {}
  assert_equal true, @object.park
end
test_should_not_warn_if_defined_in_module_after_helper_module() click to toggle source
# File test/unit/machine_test.rb, line 1174
def test_should_not_warn_if_defined_in_module_after_helper_module
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  klass = Class.new
  machine = StateMachine::Machine.new(klass)
  
  mod = Module.new do
    def park
    end
  end
  klass.class_eval do
    include mod
  end
  
  machine.define_helper(:instance, :park) {}
  assert_equal '', $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_pass_context_as_arguments() click to toggle source
# File test/unit/machine_test.rb, line 1232
def test_should_pass_context_as_arguments
  helper_args = nil
  @machine.define_helper(:instance, :park) {|*args| helper_args = args}
  @object.park
  assert_equal 2, helper_args.length
  assert_equal [@machine, @object], helper_args
end
test_should_pass_method_arguments_through() click to toggle source
# File test/unit/machine_test.rb, line 1240
def test_should_pass_method_arguments_through
  helper_args = nil
  @machine.define_helper(:instance, :park) {|*args| helper_args = args}
  @object.park(1, 2, 3)
  assert_equal 5, helper_args.length
  assert_equal [@machine, @object, 1, 2, 3], helper_args
end
test_should_warn_if_defined_in_module_prior_to_helper_module() click to toggle source
# File test/unit/machine_test.rb, line 1155
def test_should_warn_if_defined_in_module_prior_to_helper_module
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  mod = Module.new do
    def park
    end
  end
  klass = Class.new do
    include mod
  end
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:instance, :park) {}
  assert_equal "Instance method \"park\" is already defined in #{mod.to_s}, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_warn_if_defined_in_multiple_superclasses() click to toggle source
# File test/unit/machine_test.rb, line 1134
def test_should_warn_if_defined_in_multiple_superclasses
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  superclass1 = Class.new do
    def park
    end
  end
  superclass2 = Class.new(superclass1) do
    def park
    end
  end
  klass = Class.new(superclass2)
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:instance, :park) {}
  assert_equal "Instance method \"park\" is already defined in #{superclass1.to_s}, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_warn_if_defined_in_superclass() click to toggle source
# File test/unit/machine_test.rb, line 1117
def test_should_warn_if_defined_in_superclass
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  superclass = Class.new do
    def park
    end
  end
  klass = Class.new(superclass)
  machine = StateMachine::Machine.new(klass)
  
  machine.define_helper(:instance, :park) {}
  assert_equal "Instance method \"park\" is already defined in #{superclass.to_s}, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end
test_should_warn_if_defined_multiple_times() click to toggle source
# File test/unit/machine_test.rb, line 1220
def test_should_warn_if_defined_multiple_times
  require 'stringio'
  @original_stderr, $stderr = $stderr, StringIO.new
  
  @machine.define_helper(:instance, :park) {}
  @machine.define_helper(:instance, :park) {}
  
  assert_equal "Instance method \"park\" is already defined in #{@klass} :state instance helpers, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string
ensure
  $stderr = @original_stderr
end