framework for parfait runtime testing
with interpreter for now later with arm exec support
This commit is contained in:
39
test/parfait/helper.rb
Normal file
39
test/parfait/helper.rb
Normal file
@ -0,0 +1,39 @@
|
||||
require_relative '../helper'
|
||||
require "interpreter/interpreter"
|
||||
|
||||
module RuntimeTests
|
||||
|
||||
def setup
|
||||
@stdout = ""
|
||||
end
|
||||
def main
|
||||
<<HERE
|
||||
class Object
|
||||
int main()
|
||||
PROGRAM
|
||||
end
|
||||
end
|
||||
HERE
|
||||
end
|
||||
def check
|
||||
machine = Register.machine.boot
|
||||
Soml::Compiler.load_parfait
|
||||
machine.parse_and_compile main.sub("PROGRAM" , @string_input )
|
||||
machine.collect
|
||||
@interpreter = Interpreter::Interpreter.new
|
||||
@interpreter.start machine.init
|
||||
count = 0
|
||||
begin
|
||||
count += 1
|
||||
#puts interpreter.instruction
|
||||
@interpreter.tick
|
||||
end while( ! @interpreter.instruction.nil?)
|
||||
assert_equal @stdout , @interpreter.stdout
|
||||
end
|
||||
|
||||
def check_return val
|
||||
check
|
||||
assert_equal Parfait::Message , @interpreter.get_register(:r1).class
|
||||
assert_equal val , @interpreter.get_register(:r1).return_value
|
||||
end
|
||||
end
|
1
test/parfait/test_all.rb
Normal file
1
test/parfait/test_all.rb
Normal file
@ -0,0 +1 @@
|
||||
require_relative "test_layout"
|
@ -4,6 +4,8 @@ require_relative "elf/test_all"
|
||||
|
||||
require_relative "parfait_ruby/test_all"
|
||||
|
||||
require_relative "parfait/test_all"
|
||||
|
||||
require_relative "register/test_all"
|
||||
|
||||
require_relative "interpreter/test_all"
|
||||
|
Reference in New Issue
Block a user