Torsten Rüger
dcbc3e17be
move code that operates on compiler to the compiler class this leaves the collection thin, very thin indeed
33 lines
1.1 KiB
Ruby
33 lines
1.1 KiB
Ruby
require_relative "helper"
|
|
|
|
module Risc
|
|
class TestMethodCompiler < MiniTest::Test
|
|
include ScopeHelper
|
|
|
|
def setup
|
|
code = in_Test("def meth; @ivar = 5;return ;end")
|
|
rubyx = RubyX::RubyXCompiler.new(RubyX.default_test_options)
|
|
@compiler = rubyx.ruby_to_mom(code).compilers.to_risc
|
|
end
|
|
def test_compiles_risc
|
|
assert_equal Risc::MethodCompiler , @compiler.class
|
|
assert_equal Risc::Label , @compiler.risc_instructions.class
|
|
end
|
|
def test_compiles_all_risc
|
|
assert_equal Risc::LoadConstant , @compiler.risc_instructions.next.class
|
|
assert_equal 16 , @compiler.risc_instructions.length
|
|
end
|
|
def test_translate_cpu
|
|
cpu = @compiler.translate_cpu(Platform.for(:arm).translator)
|
|
assert_equal Assembler , cpu.class
|
|
assert_equal :meth , cpu.callable.name
|
|
end
|
|
def test_translate_method
|
|
ass = @compiler.translate_method(Platform.for(:arm).translator , [])
|
|
assert_equal Array , ass.class
|
|
assert_equal Assembler , ass.first.class
|
|
assert_equal :meth , ass.first.callable.name
|
|
end
|
|
end
|
|
end
|