create a load on the compiler
thus removing the need for << with objects on RegisterValue
This commit is contained in:
@ -1,13 +1,5 @@
|
||||
require_relative "helper"
|
||||
module Risc
|
||||
class FakeCallableCompiler < CallableCompiler
|
||||
def initialize(a,c)
|
||||
super(a,c)
|
||||
end
|
||||
def source_name
|
||||
"luke"
|
||||
end
|
||||
end
|
||||
class TestCallableCompiler < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!({})
|
||||
@ -29,28 +21,15 @@ module Risc
|
||||
def test_const
|
||||
assert_equal Array , @compiler.constants.class
|
||||
end
|
||||
end
|
||||
class TestFakeCallableCompiler < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!({})
|
||||
label = SlotMachine::Label.new("hi","ho")
|
||||
@compiler = FakeCallableCompiler.new(FakeCallable.new , label)
|
||||
def test_load_class
|
||||
object = @compiler.load_object(Parfait.object_space)
|
||||
assert_equal RegisterValue , object.class
|
||||
assert object.is_object?
|
||||
end
|
||||
def test_ok
|
||||
assert @compiler
|
||||
end
|
||||
def test_current
|
||||
assert @compiler.current
|
||||
end
|
||||
def test_current_label
|
||||
assert_equal Label , @compiler.current.class
|
||||
assert_equal "ho" , @compiler.current.name
|
||||
end
|
||||
def test_slot
|
||||
assert @compiler.risc_instructions
|
||||
end
|
||||
def test_const
|
||||
assert_equal Array , @compiler.constants.class
|
||||
def test_load_code
|
||||
object = @compiler.load_object(Parfait.object_space)
|
||||
assert_equal LoadConstant , @compiler.current.class
|
||||
assert_equal Parfait::Space , @compiler.current.constant.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -17,14 +17,6 @@ module Risc
|
||||
def test_r0
|
||||
assert_equal :message , @r0.symbol
|
||||
end
|
||||
def test_load_space
|
||||
move = @r0 << Parfait.object_space
|
||||
assert_equal LoadConstant , move.class
|
||||
end
|
||||
def test_load_symbol
|
||||
move = @r1 << :puts
|
||||
assert_equal LoadConstant , move.class
|
||||
end
|
||||
def test_load_label
|
||||
label = Risc::Label.new("HI","ho" , FakeAddress.new(0))
|
||||
move = @r1 << label
|
||||
|
@ -1,9 +1,9 @@
|
||||
require_relative "../helper"
|
||||
|
||||
class FakeBuilder
|
||||
attr_reader :built
|
||||
class SuperFakeCompiler
|
||||
attr_reader :code
|
||||
def add_code(ins)
|
||||
@built = ins
|
||||
@code = ins
|
||||
end
|
||||
end
|
||||
module Risc
|
||||
@ -24,14 +24,6 @@ module Risc
|
||||
def test_r0
|
||||
assert_equal :message , @r0.symbol
|
||||
end
|
||||
def test_load_space
|
||||
move = @r0 << Parfait.object_space
|
||||
assert_equal LoadConstant , move.class
|
||||
end
|
||||
def test_load_symbol
|
||||
move = @r1 << :puts
|
||||
assert_equal LoadConstant , move.class
|
||||
end
|
||||
def test_load_label
|
||||
label = Risc::Label.new("HI","ho" , FakeAddress.new(0))
|
||||
move = @r1 << label
|
||||
@ -41,16 +33,16 @@ module Risc
|
||||
transfer = @r0 << @r1
|
||||
assert_equal Transfer , transfer.class
|
||||
end
|
||||
def test_set_builder
|
||||
reg = @r0.set_builder(FakeBuilder.new)
|
||||
def test_set_compiler
|
||||
reg = @r0.set_compiler(SuperFakeCompiler.new)
|
||||
assert_equal RegisterValue , reg.class
|
||||
assert reg.builder
|
||||
assert reg.compiler
|
||||
end
|
||||
def test_calls_builder
|
||||
builder = FakeBuilder.new
|
||||
@r0.set_builder( builder )
|
||||
def test_calls_compiler
|
||||
compiler = SuperFakeCompiler.new
|
||||
@r0.set_compiler( compiler )
|
||||
@r0 << @r1
|
||||
assert_equal Transfer , builder.built.class
|
||||
assert_equal Transfer , compiler.code.class
|
||||
end
|
||||
def test_index_op
|
||||
message = @r0[:next_message]
|
||||
|
Reference in New Issue
Block a user