framework for parfait runtime testing
with interpreter for now later with arm exec support
This commit is contained in:
parent
708cdace17
commit
d878ce00d8
@ -14,7 +14,6 @@ module Register
|
|||||||
include Collector
|
include Collector
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@parser = Parser::Salama.new
|
|
||||||
@objects = {}
|
@objects = {}
|
||||||
@booted = false
|
@booted = false
|
||||||
@constants = []
|
@constants = []
|
||||||
@ -70,7 +69,7 @@ module Register
|
|||||||
end
|
end
|
||||||
|
|
||||||
def parse_and_compile bytes
|
def parse_and_compile bytes
|
||||||
syntax = @parser.parse_with_debug(bytes)
|
syntax = Parser::Salama.new.parse_with_debug(bytes)
|
||||||
parts = Parser::Transform.new.apply(syntax)
|
parts = Parser::Transform.new.apply(syntax)
|
||||||
#puts parts.inspect
|
#puts parts.inspect
|
||||||
Soml.compile( parts )
|
Soml.compile( parts )
|
||||||
|
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_ruby/test_all"
|
||||||
|
|
||||||
|
require_relative "parfait/test_all"
|
||||||
|
|
||||||
require_relative "register/test_all"
|
require_relative "register/test_all"
|
||||||
|
|
||||||
require_relative "interpreter/test_all"
|
require_relative "interpreter/test_all"
|
||||||
|
Loading…
Reference in New Issue
Block a user