c5ec532616
strange that that was not done before as the code was clearly copied when extracting it Fix bug for insertion
87 lines
2.4 KiB
Ruby
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
|