fix many a test especially whole mom

but some positioning bug still in there preventing
binary to work
This commit is contained in:
Torsten Ruger 2018-07-02 17:01:07 +03:00
parent 474cd4b348
commit 4b33d1c056
7 changed files with 34 additions and 49 deletions

View File

@ -19,7 +19,7 @@ module Elf
in_space("def main(arg);#{input};end")
end
def check(input, file)
RubyX::RubyXCompiler.ruby_to_binary( input )
RubyX::RubyXCompiler.new(input).ruby_to_binary( :arm )
writer = Elf::ObjectWriter.new(Risc.machine)
writer.save "test/#{file}.o"
end

View File

@ -1,36 +1,20 @@
require_relative "../helper"
require_relative "helper"
class TestZeroCode < MiniTest::Test
module Elf
class TestZeroCode < FullTest
def setup
Parfait.boot!
@machine = Risc.machine.boot
@space = Parfait.object_space
@space.each_type do | type |
type.method_names.each do |method|
type.remove_method(method) unless keeper(method)
end
end
@objects = Risc::Collector.collect_space
end
def keeper name
name == :main or name == :__init__
super
@linker = RubyX::RubyXCompiler.new(as_main("return 1")).ruby_to_risc(:arm)
@linker.position_all
@linker.create_binary
end
def test_empty_translate
assert_equal 2 , @space.get_all_methods.length
@machine.translate(:arm)
@machine.position_all
@machine.create_binary
writer = Elf::ObjectWriter.new(@machine )
writer = Elf::ObjectWriter.new(@linker )
writer.save "test/zero.o"
end
def test_methods_match_objects
assert_equal 2 , @space.get_all_methods.length
@objects.each do |id , objekt|
next unless objekt.is_a? Parfait::TypedMethod
assert keeper(objekt.name) , "CODE1 #{objekt.name}"
end
end
end

View File

@ -29,9 +29,9 @@ module Risc
end
def produce_instructions
assert @expect , "No output given"
RubyX::RubyXCompiler.new(as_test_main).ruby_to_binary( :interpreter)
test = Parfait.object_space.get_class_by_name :Test
test.instance_type.get_method(:main).cpu_instructions
linker = RubyX::RubyXCompiler.new(as_test_main).ruby_to_risc(:interpreter)
compiler = linker.assemblers.find{|c| c.method.name == :main and c.method.for_type.object_class.name == :Test}
compiler.instructions
end
def check_nil
produced = produce_instructions

View File

@ -4,8 +4,6 @@ module Risc
class TestPositionTranslated < MiniTest::Test
def setup
Parfait.boot!
machine = Risc.machine.boot
machine.translate(:interpreter)
@binary = Parfait::BinaryCode.new(1)
@method = Parfait.object_space.types.values.first.methods
@label = Risc.label("hi","ho")
@ -13,11 +11,11 @@ module Risc
def test_bin_propagates_existing
@binary.extend_to(16)
CodeListener.init( @binary).set(0)
CodeListener.init( @binary , :interpreter).set(0)
assert_equal @binary.padded_length , Position.get(@binary.next).at
end
def test_bin_propagates_after
CodeListener.init( @binary).set(0)
CodeListener.init( @binary , :interpreter).set(0)
@binary.extend_to(16)
assert_equal @binary.padded_length , Position.get(@binary.next).at
end

View File

@ -104,12 +104,13 @@ module Risc
Parfait.boot!
Risc.boot!
@init = Parfait.object_space.get_init
@builder = Risc::MethodCompiler.new( @init ).compiler_builder(@init)
@compiler = Risc::MethodCompiler.new( @init )
@builder = @compiler.compiler_builder(@init)
end
def test_inserts_built
r1 = RegisterValue.new(:r1 , :Space)
@builder.build{ space << r1 }
assert_equal Transfer , @init.risc_instructions.next.class , @init.risc_instructions.next
assert_equal Transfer , @compiler.risc_instructions.next.class
end
end

View File

@ -4,7 +4,7 @@ module Parfait
class TestAdapter < MiniTest::Test
def setup
Risc.machine.boot
Parfait.boot!
end
def test_list_create_from_array

View File

@ -1,16 +1,18 @@
require_relative "../helper"
module Risc
class TestTextWriter #< MiniTest::Test
class TestTextWriter < MiniTest::Test
def setup
@machine = Risc.machine.boot
Parfait.boot!
Risc.boot!
@linker = Mom::MomCompiler.new.translate(:arm)
end
def test_init
@text_writer = TextWriter.new(@machine)
@text_writer = TextWriter.new(@linker)
end
def test_write_fails
@text_writer = TextWriter.new(@machine)
@text_writer = TextWriter.new(@linker)
assert_raises{ @text_writer.write_as_string} #must translate first
end
end
@ -18,11 +20,11 @@ module Risc
def setup
Parfait.boot!
@machine = Risc.machine.boot
@machine.translate(:arm)
@machine.position_all
@machine.create_binary
@text_writer = TextWriter.new(@machine)
Risc.boot!
@linker = Mom::MomCompiler.new.translate(:arm)
@linker.position_all
@linker.create_binary
@text_writer = TextWriter.new(@linker)
end
def test_write_all
assert @text_writer.write_as_string