18f9ea019e
after renaming compiler to soml it’s where they wanna be also will allow for unifying test helpers and testing fragments remotely too
62 lines
1.3 KiB
Ruby
62 lines
1.3 KiB
Ruby
require_relative 'helper'
|
|
|
|
module Register
|
|
class TestWhile < MiniTest::Test
|
|
include Statements
|
|
|
|
|
|
def test_while_mini
|
|
@string_input = <<HERE
|
|
class Object
|
|
int main()
|
|
while_plus(1)
|
|
return 3
|
|
end
|
|
end
|
|
end
|
|
HERE
|
|
@expect = [Label, Branch, Label, LoadConstant, SetSlot, Label, LoadConstant ,
|
|
IsPlus, Label, FunctionReturn]
|
|
check
|
|
end
|
|
|
|
def test_while_assign
|
|
@string_input = <<HERE
|
|
class Object
|
|
int main()
|
|
int n = 5
|
|
while_plus(n)
|
|
n = n - 1
|
|
end
|
|
return n
|
|
end
|
|
end
|
|
HERE
|
|
@expect = [Label, LoadConstant, GetSlot, SetSlot, Branch, Label, GetSlot ,
|
|
GetSlot, LoadConstant, OperatorInstruction, GetSlot, SetSlot, Label, GetSlot ,
|
|
GetSlot, IsPlus, GetSlot, GetSlot, SetSlot, Label, FunctionReturn]
|
|
check
|
|
end
|
|
|
|
|
|
def test_while_return
|
|
@string_input = <<HERE
|
|
class Object
|
|
int main()
|
|
int n = 10
|
|
while_plus( n - 5)
|
|
n = n + 1
|
|
return n
|
|
end
|
|
end
|
|
end
|
|
HERE
|
|
@expect = [Label, LoadConstant, GetSlot, SetSlot, Branch, Label, GetSlot ,
|
|
GetSlot, LoadConstant, OperatorInstruction, GetSlot, SetSlot, GetSlot, GetSlot ,
|
|
SetSlot, Label, GetSlot, GetSlot, LoadConstant, OperatorInstruction, IsPlus ,
|
|
Label, FunctionReturn]
|
|
check
|
|
end
|
|
end
|
|
end
|