start on insertion events and handling
This commit is contained in:
@ -14,5 +14,10 @@ module Risc
|
||||
def initialize(nekst = nil)
|
||||
@next = nekst
|
||||
end
|
||||
def insert(instruction)
|
||||
ret = super
|
||||
Position.get(self).trigger_inserted if Position.set?(self)
|
||||
ret
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -53,24 +53,4 @@ module Risc
|
||||
assert_equal Branch , at_8.object.class
|
||||
end
|
||||
end
|
||||
class TestInstructionListenerBig < MiniTest::Test
|
||||
def setup
|
||||
Risc.machine.boot
|
||||
@binary = Parfait::BinaryCode.new(1)
|
||||
@bin_pos = Position.new(@binary,0)
|
||||
@instruction = DummyInstruction.new
|
||||
13.times {@instruction.last.insert(DummyInstruction.new) }
|
||||
@position = InstructionListener.init(@instruction , @binary)
|
||||
@position.set(8)
|
||||
end
|
||||
def test_padding
|
||||
assert_equal 64 , @binary.padded_length
|
||||
end
|
||||
def test_last
|
||||
assert_equal 72 , Position.get(@instruction.last).at
|
||||
end
|
||||
def test_next
|
||||
assert @binary.next
|
||||
end
|
||||
end
|
||||
end
|
||||
|
32
test/risc/position/test_instruction_listener1.rb
Normal file
32
test/risc/position/test_instruction_listener1.rb
Normal file
@ -0,0 +1,32 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Risc
|
||||
class TestInstructionListenerBig < MiniTest::Test
|
||||
def setup
|
||||
Risc.machine.boot
|
||||
@binary = Parfait::BinaryCode.new(1)
|
||||
@bin_pos = Position.new(@binary,0)
|
||||
@instruction = DummyInstruction.new
|
||||
13.times {@instruction.last.insert(DummyInstruction.new) }
|
||||
@position = InstructionListener.init(@instruction , @binary)
|
||||
@position.set(8)
|
||||
end
|
||||
def test_padding
|
||||
assert_equal 64 , @binary.padded_length
|
||||
end
|
||||
def test_last
|
||||
assert_equal 72 , Position.get(@instruction.last).at
|
||||
end
|
||||
def test_next
|
||||
assert @binary.next
|
||||
end
|
||||
def test_insert_initializes
|
||||
@instruction.insert DummyInstruction.new
|
||||
assert Position.get(@instruction.next)
|
||||
end
|
||||
def pest_insert_pushes
|
||||
@instruction.insert DummyInstruction.new
|
||||
assert_equal 76 , Position.get(@instruction.last).at
|
||||
end
|
||||
end
|
||||
end
|
@ -24,6 +24,9 @@ module Risc
|
||||
def test_has_listeners_helper
|
||||
assert_equal Array , @pos.position_listeners.class
|
||||
end
|
||||
def test_has_trigger_inserted
|
||||
assert_equal [] , @pos.trigger_inserted
|
||||
end
|
||||
def test_listeners_empty
|
||||
assert @pos.position_listeners.empty?
|
||||
end
|
||||
@ -80,7 +83,7 @@ module Risc
|
||||
def test_can_unregister
|
||||
listener = PositionListener.new(self)
|
||||
assert @position.position_listener(listener)
|
||||
assert @position.unregister_event(:position_changed ,listener)
|
||||
assert @position.remove_position_listener(listener)
|
||||
end
|
||||
def test_fires
|
||||
@object = @instruction
|
||||
@ -92,13 +95,22 @@ module Risc
|
||||
@object = @instruction
|
||||
Position.new(self, 10)
|
||||
assert @position.register_event(:position_changed , self)
|
||||
assert @position.unregister_event(:position_changed ,self)
|
||||
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)
|
||||
@position.trigger_inserted
|
||||
assert_equal @position , @trigger
|
||||
end
|
||||
def position_changed(pos)
|
||||
@trigger = pos
|
||||
end
|
||||
def position_inserted(pos)
|
||||
@trigger = pos
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user