class MachineWithClassHelpersTest
Public Class Methods
park()
click to toggle source
# File test/unit/machine_test.rb, line 1304 def self.park end
Public Instance Methods
park()
click to toggle source
# File test/unit/machine_test.rb, line 1342 def park end
setup()
click to toggle source
# File test/unit/machine_test.rb, line 1259 def setup @klass = Class.new @machine = StateMachine::Machine.new(@klass) end
test_should_allow_string_evaluation()
click to toggle source
# File test/unit/machine_test.rb, line 1430 def test_should_allow_string_evaluation @machine.define_helper :class, <<-end_eval, __FILE__, __LINE__ + 1 def states [] end end_eval assert_equal [], @klass.states end
test_should_define_if_ignoring_method_conflicts_and_defined_in_superclass()
click to toggle source
# File test/unit/machine_test.rb, line 1377 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 self.park end end klass = Class.new(superclass) machine = StateMachine::Machine.new(klass) machine.define_helper(:class, :park) {true} assert_equal '', $stderr.string assert_equal true, klass.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 1397 def test_should_define_nonexistent_methods @machine.define_helper(:class, :states) {[]} assert_equal [], @klass.states end
test_should_not_redefine_existing_private_methods()
click to toggle source
# File test/unit/machine_test.rb, line 1287 def test_should_not_redefine_existing_private_methods class << @klass private def states [] end end @machine.define_helper(:class, :states) {} assert_equal [], @klass.send(:states) end
test_should_not_redefine_existing_protected_methods()
click to toggle source
# File test/unit/machine_test.rb, line 1275 def test_should_not_redefine_existing_protected_methods class << @klass protected def states [] end end @machine.define_helper(:class, :states) {} assert_equal [], @klass.send(:states) end
test_should_not_redefine_existing_public_methods()
click to toggle source
# File test/unit/machine_test.rb, line 1264 def test_should_not_redefine_existing_public_methods class << @klass def states [] end end @machine.define_helper(:class, :states) {} assert_equal [], @klass.states end
test_should_not_warn_if_defined_in_module_after_helper_module()
click to toggle source
# File test/unit/machine_test.rb, line 1356 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 extend mod end machine.define_helper(:class, :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 1414 def test_should_pass_context_as_arguments helper_args = nil @machine.define_helper(:class, :states) {|*args| helper_args = args} @klass.states assert_equal 2, helper_args.length assert_equal [@machine, @klass], helper_args end
test_should_pass_method_arguments_through()
click to toggle source
# File test/unit/machine_test.rb, line 1422 def test_should_pass_method_arguments_through helper_args = nil @machine.define_helper(:class, :states) {|*args| helper_args = args} @klass.states(1, 2, 3) assert_equal 5, helper_args.length assert_equal [@machine, @klass, 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 1337 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 extend mod end machine = StateMachine::Machine.new(klass) machine.define_helper(:class, :park) {} assert_equal "Class 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 1316 def test_should_warn_if_defined_in_multiple_superclasses require 'stringio' @original_stderr, $stderr = $stderr, StringIO.new superclass1 = Class.new do def self.park end end superclass2 = Class.new(superclass1) do def self.park end end klass = Class.new(superclass2) machine = StateMachine::Machine.new(klass) machine.define_helper(:class, :park) {} assert_equal "Class 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 1299 def test_should_warn_if_defined_in_superclass require 'stringio' @original_stderr, $stderr = $stderr, StringIO.new superclass = Class.new do def self.park end end klass = Class.new(superclass) machine = StateMachine::Machine.new(klass) machine.define_helper(:class, :park) {} assert_equal "Class 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 1402 def test_should_warn_if_defined_multiple_times require 'stringio' @original_stderr, $stderr = $stderr, StringIO.new @machine.define_helper(:class, :states) {} @machine.define_helper(:class, :states) {} assert_equal "Class method \"states\" is already defined in #{@klass} :state class helpers, use generic helper instead or set StateMachine::Machine.ignore_method_conflicts = true.\n", $stderr.string ensure $stderr = @original_stderr end