fix many a test especially whole mom
but some positioning bug still in there preventing binary to work
This commit is contained in:
parent
474cd4b348
commit
4b33d1c056
@ -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
|
||||
|
@ -1,36 +1,20 @@
|
||||
require_relative "../helper"
|
||||
require_relative "helper"
|
||||
|
||||
class TestZeroCode < MiniTest::Test
|
||||
module Elf
|
||||
|
||||
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
|
||||
class TestZeroCode < FullTest
|
||||
|
||||
def setup
|
||||
super
|
||||
@linker = RubyX::RubyXCompiler.new(as_main("return 1")).ruby_to_risc(:arm)
|
||||
@linker.position_all
|
||||
@linker.create_binary
|
||||
end
|
||||
@objects = Risc::Collector.collect_space
|
||||
end
|
||||
def keeper name
|
||||
name == :main or name == :__init__
|
||||
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.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}"
|
||||
def test_empty_translate
|
||||
writer = Elf::ObjectWriter.new(@linker )
|
||||
writer.save "test/zero.o"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -4,7 +4,7 @@ module Parfait
|
||||
class TestAdapter < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Risc.machine.boot
|
||||
Parfait.boot!
|
||||
end
|
||||
|
||||
def test_list_create_from_array
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user