require_relative "helper"

module Risc
  # tests that do no require a boot and only test basic positioning
  class TestPosition < MiniTest::Test

    def setup
      @pos = Position.new(self )
    end
    def test_new
      assert @pos
    end
    def test_invalid
      assert !@pos.valid?
    end
    def test_next_slot
      Parfait.boot!(Parfait.default_test_options)
      mov = Arm::ArmMachine.mov(:r1 , :r1)
      position = Position.new(mov ).set(0)
      assert_equal 4, position.next_slot
    end
    def test_has_get_code
      assert_nil @pos.get_code
    end
    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_has_trigger_changed
      assert_equal [] , @pos.trigger_changed
    end
    def test_listeners_empty
      assert @pos.position_listeners.empty?
    end
    def test_has_listener_helper
      @pos.position_listener( self )
      assert_equal 1 , @pos.position_listeners.length
    end
    def test_set
      assert_equal 0 , @pos.set(0).at
    end
  end
end