diff --git a/test/test_crystal.rb b/test/test_crystal.rb index c0ef49ea..d3e45b76 100644 --- a/test/test_crystal.rb +++ b/test/test_crystal.rb @@ -1,7 +1,33 @@ -require 'helper' +require_relative 'helper' +require "asm/arm/code_generator" -class TestCrystal < MiniTest::Unit::TestCase - def test_something_for_real - flunk "hey buddy, you should probably rename this file and start testing for real" +# try to test that the generation of basic instructions works +class TestAsm < MiniTest::Test + def setup + @generator = Asm::Arm::CodeGenerator.new + end + + def test_mov + m = @generator.instance_eval { mov r0, 5 }.first + assert_equal :mov , m.opcode + binary = @generator.assemble + assert_equal 4 , binary.length + should = [5,0,160,227] + index = 0 + binary.each_byte do |byte | + assert_equal byte , should[index] + index += 1 + end + end + + def saved_other + @generator.instance_eval do + mov r0, 5 + loop_start = label + loop_start.set! + subs r0, r0, 1 + bne loop_start + bx lr + end end end