require_relative "helper" module Risc class TestPositionEvents < MiniTest::Test def setup Position.clear_positions @instruction = DummyInstruction.new @position = Position.new(@instruction).set(0) @listener = PositionListener.new( @instruction ) end def test_has_register assert @position.position_listener( @instruction ) end def test_can_unregister listener = PositionListener.new(self) assert @position.position_listener(listener) assert @position.remove_position_listener(listener) end def test_fires @object = @instruction @position.register_event(:position_changed , self)#can't use helper @position.trigger_changed assert_equal @position , @trigger end def test_no_fire_after_unregister @object = @instruction Position.new(self).set(10) assert @position.register_event(:position_changed , self)#can't use helper assert @position.remove_position_listener(self) @position.trigger(:position_changed , @position) assert_nil @trigger end def test_can_trigger_inserted @object = @instruction @position.register_event(:position_changed , self) #can't use helper @position.trigger_inserted assert_equal @position , @trigger end def test_position_set_triggers @object = @instruction Position.new(self).set(0) @position.register_event(:position_changed , self)#can't use helper @position.set(10) assert_equal @position , @trigger assert_equal @to , 10 end def position_changed(pos) @trigger = pos end def position_inserted(pos) @trigger = pos end def position_changing(pos , to) @trigger = pos @to = to end end end