rubyx/test/risc/test_instructions.rb
Torsten Ruger c5ec532616 use common list for risc instruction
strange that that was not done before as the code was clearly copied
when extracting it

Fix bug for insertion
2018-03-18 10:36:01 +05:30

87 lines
2.4 KiB
Ruby

require_relative "../helper"
module Risc
class TestInstructions < MiniTest::Test
def setup
@label = Label.new("test" , "test")
@branch = Branch.new("test" , @label)
@instruction = Instruction.new("test")
end
def test_branch_tos1
assert @branch.to_s.include?("Branch")
assert @branch.to_s.include?("test")
end
def test_branch_tos2
branch = Branch.new(nil ,nil)
assert branch.to_s.include?("Branch")
end
def test_label_tos1
assert @label.to_s.include?("Label")
end
def test_label_tos2
assert Label.new(nil,nil).to_s.include?("Label")
end
def test_last_empty
assert_equal @instruction, @instruction.last
end
def test_last_not_empty
@instruction.set_next @branch
assert_equal @branch, @instruction.last
end
def test_append_empty
@instruction.append @branch
assert_equal @branch, @instruction.last
end
def test_insert
@instruction.insert @branch
assert_equal @branch, @instruction.last
end
def test_insert_two
@branch << @label
@instruction.insert @branch
assert_equal @label , @instruction.last
end
def test_append_not_empty
@instruction.append @branch
@instruction.append @label
assert_equal @label, @instruction.last
end
def test_next1
assert_nil @instruction.next
end
def test_next2
@instruction.set_next @label
assert_equal @label , @instruction.next
assert_nil @instruction.next(2)
end
def test_replace
@instruction.append @branch
@instruction.replace_next @label
assert_equal @label, @instruction.last
assert_equal @label, @instruction.next
assert_equal 2 , @instruction.length , @instruction.to_arr
end
def test_each_label1
@instruction.set_next @label
start = Label.new("test" , "test" , @instruction)
count = 0
start.each_label { |l| count += 1 }
assert_equal 2 , count
end
def test_each_label2
@instruction.set_next @branch
start = Label.new("test" , "test" , @instruction)
count = 0
start.each_label { |l| count += 1 }
assert_equal 2 , count
end
def test_label_is_method
label = Label.new("test" , "Object.test")
assert label.is_method
end
def test_label_is_not_method
assert ! @label.is_method
end
end
end