57dc6c45bb
this is core of #11 rename compiler_builder to just builder and change all builder uses to use that some test change as code is not returned anymore
37 lines
1.2 KiB
Ruby
37 lines
1.2 KiB
Ruby
require_relative "../helper"
|
|
|
|
module Risc
|
|
class TestCompilerBuilder < MiniTest::Test
|
|
|
|
def setup
|
|
Parfait.boot!
|
|
Risc.boot!
|
|
@init = Parfait.object_space.get_init
|
|
@compiler = Risc::MethodCompiler.new( @init )
|
|
@builder = @compiler.builder(@init)
|
|
end
|
|
def test_inserts_built
|
|
r1 = RegisterValue.new(:r1 , :Space)
|
|
@builder.build{ space! << r1 }
|
|
assert_equal Transfer , @compiler.risc_instructions.next.class
|
|
assert_equal RegisterValue , @builder.space.class
|
|
end
|
|
def test_loads
|
|
@builder.build{ space! << Parfait.object_space }
|
|
assert_equal LoadConstant , @compiler.risc_instructions.next.class
|
|
assert_equal RegisterValue , @builder.space.class
|
|
end
|
|
def test_two
|
|
@builder.build{ space! << Parfait.object_space ; integer! << 1}
|
|
assert_equal LoadConstant , @compiler.risc_instructions.next.class
|
|
assert_equal LoadData , @compiler.risc_instructions.next(2).class
|
|
end
|
|
def test_swap
|
|
test_two
|
|
@builder.swap_names( :space , :integer)
|
|
assert_equal :Integer , @builder.space.type.class_name
|
|
assert_equal :Space , @builder.integer.type.class_name
|
|
end
|
|
end
|
|
end
|