clearer organization for compiler tests
was slightly messy with small/large now needed different test for expression and statements
This commit is contained in:
31
test/compiler/expressions/compiler_helper.rb
Normal file
31
test/compiler/expressions/compiler_helper.rb
Normal file
@ -0,0 +1,31 @@
|
||||
require_relative '../../helper'
|
||||
require 'parslet/convenience'
|
||||
|
||||
Phisol::Compiler.class_eval do
|
||||
def set_main main
|
||||
@clazz = Virtual.machine.space.get_class_by_name :Object
|
||||
@method = main
|
||||
end
|
||||
end
|
||||
|
||||
module CompilerHelper
|
||||
|
||||
def set_main compiler
|
||||
compiler.set_main Virtual.machine.space.get_main
|
||||
end
|
||||
def check
|
||||
machine = Virtual.machine
|
||||
machine.boot unless machine.booted
|
||||
parser = Parser::Salama.new
|
||||
parser = parser.send @root
|
||||
syntax = parser.parse_with_debug(@string_input)
|
||||
parts = Parser::Transform.new.apply(syntax)
|
||||
#puts parts.inspect
|
||||
compiler = Phisol::Compiler.new
|
||||
set_main(compiler)
|
||||
produced = compiler.process( parts )
|
||||
assert @output , "No output given"
|
||||
assert_equal produced.class, @output , "Wrong class"
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user