rubyx/test/compiler/statements/test_if.rb

64 lines
1.2 KiB
Ruby
Raw Normal View History

2015-10-15 08:47:11 +02:00
require_relative 'helper'
module Register
2015-10-15 08:47:11 +02:00
class TestIfStatement < MiniTest::Test
include Statements
def test_if_basic
@string_input = <<HERE
class Object
int main()
if_plus( 10 < 12)
2015-10-15 08:47:11 +02:00
return 3
else
return 4
end
end
end
HERE
@expect = [[SaveReturn,LoadConstant,LoadConstant,
OperatorInstruction,IsZeroBranch] ,
[LoadConstant,AlwaysBranch] ,[LoadConstant] ,[] ,
[RegisterTransfer,GetSlot,FunctionReturn]]
2015-10-15 08:47:11 +02:00
check
end
def test_if_small
@string_input = <<HERE
class Object
int main()
if_minus( 10 < 12)
2015-10-15 08:47:11 +02:00
return 3
end
end
end
HERE
@expect = [[SaveReturn,LoadConstant,LoadConstant,
OperatorInstruction,IsZeroBranch] ,
[AlwaysBranch] ,[LoadConstant] ,[] ,
[RegisterTransfer,GetSlot,FunctionReturn]]
2015-10-15 08:47:11 +02:00
check
end
def ttest_call_function
@string_input = <<HERE
class Object
int itest(int n)
return 4
end
int main()
itest(20)
end
end
HERE
@expect = [ [SaveReturn,GetSlot,SetSlot,LoadConstant,
SetSlot,LoadConstant,SetSlot,RegisterTransfer,FunctionCall,
GetSlot] ,[RegisterTransfer,GetSlot,FunctionReturn] ]
2015-10-15 08:47:11 +02:00
check
end
end
end