require_relative "../helper"

module Risc
  class Dummy
    def padded_length
      4
    end
    def byte_length
      4
    end
  end
  class Machine
    def set_platform(plat)
      @platform = plat
    end
    def set_translated
      @translated = true
      translate_methods( @platform.translator )
      @cpu_init = risc_init.to_cpu(@platform.translator)
    end
  end
  class DummyPlatform
    def self.boot
      Parfait.boot!(Parfait.default_test_options)
      Risc.boot!
    end
    def translator
      DummyTranslator.new
    end
    def padding
      0
    end
  end
  class DummyTranslator
    def translate(arg)
      DummyInstruction.new
    end
  end
  class DummyBranch < Branch
    attr_reader :precheck_called

    def precheck
      @precheck_called = true
    end
  end

  class DummyInstruction < Dummy
    include Util::List
    def initialize(nekst = nil)
      @next = nekst
    end
    def insert(instruction)
      ret = super
      Position.get(self).trigger_inserted if Position.set?(self)
      ret
    end
    def assemble(io)
      io.write_unsigned_int_32(0)
    end
    def total_byte_length
      4
    end
  end
end