did return sequence
surprisingly easy. also some check polish
This commit is contained in:
20
test/slot_machine/instructions/test_label.rb
Normal file
20
test/slot_machine/instructions/test_label.rb
Normal file
@ -0,0 +1,20 @@
|
||||
require_relative "helper"
|
||||
|
||||
module SlotMachine
|
||||
class TestLabel < SlotMachineInstructionTest
|
||||
def instruction
|
||||
Label.new("ok" , "target")
|
||||
end
|
||||
def test_len
|
||||
assert_equal 2 , all.length
|
||||
assert_equal Risc::Label , all.first.class
|
||||
end
|
||||
def test_1_label
|
||||
assert_equal Risc::Label , risc(1).class
|
||||
end
|
||||
def test_2_slot
|
||||
label = @instruction.risc_label( @compiler)
|
||||
assert_equal risc(1) , label
|
||||
end
|
||||
end
|
||||
end
|
@ -6,29 +6,26 @@ module SlotMachine
|
||||
ReturnSequence.new("source")
|
||||
end
|
||||
def test_len
|
||||
assert_equal 8 , all.length , all_str
|
||||
assert_equal 7 , all.length , all_str
|
||||
end
|
||||
def test_1_load_return_value
|
||||
assert_slot_to_reg risc(1) ,:r0 , 5 , :r1
|
||||
assert_slot_to_reg risc(1) ,:message , 6 , "message.caller"
|
||||
end
|
||||
def test_2_load_caller
|
||||
assert_slot_to_reg risc(2) ,:r0 , 6 , :r2
|
||||
assert_slot_to_reg risc(2) ,"message.caller" , 5 , "message.caller.return_value"
|
||||
end
|
||||
def test_3_store_return_in_caller
|
||||
assert_reg_to_slot risc(3) , :r1 , :r2 , 5
|
||||
assert_reg_to_slot risc(3) , "message.caller.return_value" , "message.caller" , 5
|
||||
end
|
||||
def test_4_load_return_address
|
||||
assert_slot_to_reg risc(4) ,:r0 , 4 , :r3
|
||||
assert_slot_to_reg risc(4) ,:message , 4 , "message.return_address"
|
||||
end
|
||||
def test_5_get_int_for_address
|
||||
assert_slot_to_reg risc(5) ,:r3 , 2 , :r3
|
||||
def test_5_swap_messages
|
||||
assert_slot_to_reg risc(5) ,:message, 6 , :message
|
||||
end
|
||||
def test_6_swap_messages
|
||||
assert_slot_to_reg risc(6) ,:r0 , 6 , :r0
|
||||
end
|
||||
def test_7_do_return
|
||||
assert_equal Risc::FunctionReturn , risc(7).class
|
||||
assert_equal :r3 , risc(7).register.symbol
|
||||
def test_6_do_return
|
||||
assert_equal Risc::FunctionReturn , risc(6).class
|
||||
assert_equal :"message.return_address" , risc(6).register.symbol
|
||||
end
|
||||
end
|
||||
end
|
||||
|
28
test/slot_machine/instructions/test_same_check.rb
Normal file
28
test/slot_machine/instructions/test_same_check.rb
Normal file
@ -0,0 +1,28 @@
|
||||
require_relative "helper"
|
||||
|
||||
module SlotMachine
|
||||
class TestSameCheck < SlotMachineInstructionTest
|
||||
def instruction
|
||||
left = SlottedMessage.new( [:caller])
|
||||
right = SlottedMessage.new( [:next_message])
|
||||
SameCheck.new(left , right , Label.new("ok" , "target"))
|
||||
end
|
||||
def test_len
|
||||
assert_equal 5 , all.length
|
||||
assert_equal Risc::Label , all.first.class
|
||||
end
|
||||
def test_1_slot
|
||||
assert_slot_to_reg risc(1) ,:message , 6 , :"message.caller"
|
||||
end
|
||||
def test_2_slot
|
||||
assert_slot_to_reg risc(2) ,:message , 1 , :"message.next_message"
|
||||
end
|
||||
def test_3_op
|
||||
assert_operator risc(3) , :- , "message.caller" , "message.next_message"
|
||||
end
|
||||
def test_4_zero
|
||||
assert_equal Risc::IsNotZero , risc(4).class
|
||||
assert_label risc(4).label , "target"
|
||||
end
|
||||
end
|
||||
end
|
@ -1,7 +1,7 @@
|
||||
require_relative "helper"
|
||||
|
||||
module SlotMachine
|
||||
class TestSameCheck < SlotMachineInstructionTest
|
||||
class TestTruthCheck < SlotMachineInstructionTest
|
||||
def instruction
|
||||
target = SlottedMessage.new( [:caller])
|
||||
TruthCheck.new(target , Label.new("ok" , "target"))
|
||||
|
Reference in New Issue
Block a user