Rename Vool to Sol
Simple is really the descriptive name for the layer Sure, it is "virtual" but that is not as important as the fact that it is simple (or simplified) Also objct (based really) is better, since orientated implies it is a little like that, but only orientated, not really it. Sol only has objects, nothing else Just cause i was renaming anyway
This commit is contained in:
@ -1,13 +1,13 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
class TestVoolMethod < MiniTest::Test
|
||||
include VoolCompile
|
||||
module Sol
|
||||
class TestSolMethod < MiniTest::Test
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
ruby_tree = Ruby::RubyCompiler.compile( as_main("a = 5") )
|
||||
@clazz = ruby_tree.to_vool
|
||||
@clazz = ruby_tree.to_sol
|
||||
end
|
||||
def method
|
||||
@clazz.body.first
|
||||
@ -22,7 +22,7 @@ module Vool
|
||||
end
|
||||
def test_method
|
||||
clazz = @clazz.to_parfait
|
||||
assert_equal Parfait::VoolMethod , clazz.get_instance_method(:main).class
|
||||
assert_equal Parfait::SolMethod , clazz.get_instance_method(:main).class
|
||||
end
|
||||
def test_type_method
|
||||
clazz = @clazz.to_parfait
|
@ -7,7 +7,7 @@ module Parfait
|
||||
[:Behaviour ,:BinaryCode,:Block,:CacheEntry,:Callable,:CallableMethod,:Class,
|
||||
:DataObject,:Data4,:Data8,:Data16,:Data32,:Dictionary,:Factory, :Integer,:FalseClass,
|
||||
:List,:Message, :SingletonClass,:NilClass,:Object,:ReturnAddress,
|
||||
:Space,:TrueClass,:Type,:VoolMethod,:Word]
|
||||
:Space,:TrueClass,:Type,:SolMethod,:Word]
|
||||
end
|
||||
|
||||
def test_space_length
|
||||
|
@ -12,9 +12,9 @@ module Ruby
|
||||
def compile_main(input)
|
||||
RubyCompiler.compile(as_main(input))
|
||||
end
|
||||
def compile_main_vool(input)
|
||||
def compile_main_sol(input)
|
||||
xcompiler = RubyX::RubyXCompiler.new(RubyX.default_test_options)
|
||||
xcompiler.ruby_to_vool(as_main(input))
|
||||
xcompiler.ruby_to_sol(as_main(input))
|
||||
end
|
||||
|
||||
def assert_raises_muted &block
|
||||
@ -28,25 +28,25 @@ module Ruby
|
||||
include RubyTests
|
||||
def setup
|
||||
super
|
||||
@vool = compile( "class Tryout < Base; #{attr_def};end" ).to_vool
|
||||
@sol = compile( "class Tryout < Base; #{attr_def};end" ).to_sol
|
||||
end
|
||||
def getter
|
||||
@vool.body.statements.first
|
||||
@sol.body.statements.first
|
||||
end
|
||||
def setter
|
||||
@vool.body.statements.last
|
||||
@sol.body.statements.last
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::ClassExpression , @vool.class
|
||||
assert_equal Sol::ClassExpression , @sol.class
|
||||
end
|
||||
def test_body
|
||||
assert_equal Vool::Statements , @vool.body.class
|
||||
assert_equal Sol::Statements , @sol.body.class
|
||||
end
|
||||
def test_getter
|
||||
assert_equal Vool::MethodExpression , getter.class
|
||||
assert_equal Sol::MethodExpression , getter.class
|
||||
end
|
||||
def test_getter_return
|
||||
assert_equal Vool::ReturnStatement , getter.body.class
|
||||
assert_equal Sol::ReturnStatement , getter.body.class
|
||||
end
|
||||
def test_getter_name
|
||||
assert_equal :page , getter.name
|
||||
|
@ -25,46 +25,46 @@ module Ruby
|
||||
assert_equal IvarAssignment , lst.class
|
||||
end
|
||||
end
|
||||
class TestAssignmentVoolLocal < MiniTest::Test
|
||||
class TestAssignmentSolLocal < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "foo = bar").to_vool
|
||||
@lst = compile( "foo = bar").to_sol
|
||||
end
|
||||
def test_tos
|
||||
assert_equal "foo = self.bar()" , @lst.to_s
|
||||
end
|
||||
def test_local
|
||||
assert_equal Vool::LocalAssignment , @lst.class
|
||||
assert_equal Sol::LocalAssignment , @lst.class
|
||||
end
|
||||
def test_bar
|
||||
assert_equal Vool::SendStatement , @lst.value.class
|
||||
assert_equal Sol::SendStatement , @lst.value.class
|
||||
end
|
||||
def test_local_name
|
||||
assert_equal :foo , @lst.name
|
||||
end
|
||||
end
|
||||
class TestAssignmentVoolInst < MiniTest::Test
|
||||
class TestAssignmentSolInst < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "@foo = bar").to_vool
|
||||
@lst = compile( "@foo = bar").to_sol
|
||||
end
|
||||
def test_tos
|
||||
assert_equal "@foo = self.bar()" , @lst.to_s
|
||||
end
|
||||
def test_instance
|
||||
assert_equal Vool::IvarAssignment , @lst.class
|
||||
assert_equal Sol::IvarAssignment , @lst.class
|
||||
end
|
||||
def test_instance_name
|
||||
assert_equal :foo , @lst.name
|
||||
end
|
||||
end
|
||||
class TestAssignmentVoolConst < MiniTest::Test
|
||||
class TestAssignmentSolConst < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "foo = 5").to_vool
|
||||
@lst = compile( "foo = 5").to_sol
|
||||
end
|
||||
def test_const
|
||||
assert_equal Vool::IntegerConstant , @lst.value.class
|
||||
assert_equal Sol::IntegerConstant , @lst.value.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,30 +1,30 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Ruby
|
||||
class TestVoolCallMulti2 < MiniTest::Test
|
||||
class TestSolCallMulti2 < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "@foo = a.call(b)").to_vool
|
||||
@lst = compile( "@foo = a.call(b)").to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
end
|
||||
def test_first_class
|
||||
assert_equal Vool::LocalAssignment , @lst[0].class
|
||||
assert_equal Sol::LocalAssignment , @lst[0].class
|
||||
end
|
||||
def test_first_name
|
||||
assert @lst[0].name.to_s.start_with?("tmp_")
|
||||
end
|
||||
def test_second_class
|
||||
assert_equal Vool::LocalAssignment , @lst[1].class
|
||||
assert_equal Sol::LocalAssignment , @lst[1].class
|
||||
end
|
||||
def test_second_name
|
||||
assert @lst[1].name.to_s.start_with?("tmp_")
|
||||
end
|
||||
def test_last_class
|
||||
assert_equal Vool::IvarAssignment , @lst[2].class
|
||||
assert_equal Sol::IvarAssignment , @lst[2].class
|
||||
end
|
||||
def test_second_name
|
||||
assert_equal :foo, @lst[2].name
|
||||
|
@ -79,7 +79,7 @@ module Ruby
|
||||
assert_equal TrueConstant , compile_const( "true")
|
||||
end
|
||||
end
|
||||
class TestBasicTypesVool < MiniTest::Test
|
||||
class TestBasicTypesSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup
|
||||
@ -87,7 +87,7 @@ module Ruby
|
||||
end
|
||||
def compile_const( input )
|
||||
lst = compile( input )
|
||||
lst.to_vool.to_s
|
||||
lst.to_sol.to_s
|
||||
end
|
||||
def test_integer
|
||||
assert_equal "123" , compile_const( "123")
|
||||
|
@ -40,35 +40,35 @@ module Ruby
|
||||
|
||||
def setup()
|
||||
input = "def self.tryout(arg1, arg2) ; a = arg1 ; end "
|
||||
@lst = compile( input ).to_vool
|
||||
@lst = compile( input ).to_sol
|
||||
end
|
||||
def test_method
|
||||
assert_equal Vool::ClassMethodExpression , @lst.class
|
||||
assert_equal Sol::ClassMethodExpression , @lst.class
|
||||
end
|
||||
def test_method_args
|
||||
assert_equal [:arg1, :arg2] , @lst.args
|
||||
end
|
||||
def test_body_is_scope_zero_statement
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Sol::Statements , @lst.body.class
|
||||
end
|
||||
def test_body_is_scope_zero_statement
|
||||
assert_equal Vool::LocalAssignment , @lst.body.first.class
|
||||
assert_equal Sol::LocalAssignment , @lst.body.first.class
|
||||
end
|
||||
end
|
||||
class TestClassMethodStatementImplicitReturn < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup()
|
||||
input = "def self.tryout(arg1, arg2) ; arg1 ; end "
|
||||
@lst = compile( input ).to_vool
|
||||
@lst = compile( input ).to_sol
|
||||
end
|
||||
def test_method
|
||||
assert_equal Vool::ClassMethodExpression , @lst.class
|
||||
assert_equal Sol::ClassMethodExpression , @lst.class
|
||||
end
|
||||
def test_method_args
|
||||
assert_equal [:arg1, :arg2] , @lst.args
|
||||
end
|
||||
def test_body_is_scope_zero_statement
|
||||
assert_equal Vool::ReturnStatement , @lst.body.class
|
||||
assert_equal Sol::ReturnStatement , @lst.body.class
|
||||
end
|
||||
end
|
||||
class TestClassMethodStatement < MiniTest::Test
|
||||
|
@ -1,24 +1,24 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Ruby
|
||||
class TestClassStatementVool < MiniTest::Test
|
||||
class TestClassStatementSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup
|
||||
input = "class Tryout < Base;def meth; a = 5 ;end; end"
|
||||
@vool = compile( input ).to_vool
|
||||
@sol = compile( input ).to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::ClassExpression , @vool.class
|
||||
assert_equal Sol::ClassExpression , @sol.class
|
||||
end
|
||||
def test_body
|
||||
assert_equal Vool::Statements , @vool.body.class
|
||||
assert_equal Sol::Statements , @sol.body.class
|
||||
end
|
||||
def test_compile_class_name
|
||||
assert_equal :Tryout , @vool.name
|
||||
assert_equal :Tryout , @sol.name
|
||||
end
|
||||
def test_compile_class_super
|
||||
assert_equal :Base , @vool.super_class_name
|
||||
assert_equal :Base , @sol.super_class_name
|
||||
end
|
||||
|
||||
end
|
||||
@ -63,15 +63,15 @@ module Ruby
|
||||
|
||||
def test_if
|
||||
input = "class Tryout < Base; false if(true) ; end"
|
||||
assert_raises_muted { compile( input ).to_vool}
|
||||
assert_raises_muted { compile( input ).to_sol}
|
||||
end
|
||||
def test_instance
|
||||
input = "class Tryout < Base; @var = 5 ; end"
|
||||
assert_raises_muted { compile( input ).to_vool}
|
||||
assert_raises_muted { compile( input ).to_sol}
|
||||
end
|
||||
def test_wrong_send
|
||||
input = "class Tryout < Base; hi() ; end"
|
||||
assert_raises_muted { compile( input ).to_vool}
|
||||
assert_raises_muted { compile( input ).to_sol}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -9,18 +9,18 @@ module Ruby
|
||||
end
|
||||
|
||||
def test_method_len
|
||||
assert_equal 2 , @vool.body.length , "setter, getter"
|
||||
assert_equal 2 , @sol.body.length , "setter, getter"
|
||||
end
|
||||
def test_setter
|
||||
assert_equal Vool::MethodExpression , setter.class
|
||||
assert_equal Sol::MethodExpression , setter.class
|
||||
end
|
||||
def test_setter_assign
|
||||
assert_equal Vool::Statements , setter.body.class
|
||||
assert_equal Vool::IvarAssignment , setter.body.first.class
|
||||
assert_equal Sol::Statements , setter.body.class
|
||||
assert_equal Sol::IvarAssignment , setter.body.first.class
|
||||
end
|
||||
def test_setter_return
|
||||
assert_equal Vool::Statements , setter.body.class
|
||||
assert_equal Vool::ReturnStatement , setter.body.last.class
|
||||
assert_equal Sol::Statements , setter.body.class
|
||||
assert_equal Sol::ReturnStatement , setter.body.last.class
|
||||
end
|
||||
def test_setter_name
|
||||
assert_equal :page= , setter.name
|
||||
@ -36,7 +36,7 @@ module Ruby
|
||||
"attr_reader :page"
|
||||
end
|
||||
def test_method_len
|
||||
assert_equal 1 , @vool.body.length , "setter, getter"
|
||||
assert_equal 1 , @sol.body.length , "setter, getter"
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -8,18 +8,18 @@ module Ruby
|
||||
"attr :page , :size"
|
||||
end
|
||||
def test_method_len
|
||||
assert_equal 4 , @vool.body.length , "2 setters, 2 getters"
|
||||
assert_equal 4 , @sol.body.length , "2 setters, 2 getters"
|
||||
end
|
||||
def test_setter
|
||||
assert_equal Vool::MethodExpression , setter.class
|
||||
assert_equal Sol::MethodExpression , setter.class
|
||||
end
|
||||
def test_setter_assign
|
||||
assert_equal Vool::Statements , setter.body.class
|
||||
assert_equal Vool::IvarAssignment , setter.body.first.class
|
||||
assert_equal Sol::Statements , setter.body.class
|
||||
assert_equal Sol::IvarAssignment , setter.body.first.class
|
||||
end
|
||||
def test_setter_return
|
||||
assert_equal Vool::Statements , setter.body.class
|
||||
assert_equal Vool::ReturnStatement , setter.body.last.class
|
||||
assert_equal Sol::Statements , setter.body.class
|
||||
assert_equal Sol::ReturnStatement , setter.body.last.class
|
||||
end
|
||||
def test_setter_name
|
||||
assert_equal :size= , setter.name
|
||||
|
@ -1,51 +1,51 @@
|
||||
require_relative 'helper'
|
||||
|
||||
module Ruby
|
||||
class TestIfStatementVool < MiniTest::Test
|
||||
class TestIfStatementSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup
|
||||
@lst = compile("if(true) ; a = 1 ; else ; a = 2 ; end").to_vool
|
||||
@lst = compile("if(true) ; a = 1 ; else ; a = 2 ; end").to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::IfStatement , @lst.class
|
||||
assert_equal Sol::IfStatement , @lst.class
|
||||
end
|
||||
def test_true
|
||||
assert_equal Vool::LocalAssignment , @lst.if_true.class
|
||||
assert_equal Sol::LocalAssignment , @lst.if_true.class
|
||||
assert @lst.has_true?
|
||||
end
|
||||
def test_false
|
||||
assert_equal Vool::LocalAssignment , @lst.if_false.class
|
||||
assert_equal Sol::LocalAssignment , @lst.if_false.class
|
||||
assert @lst.has_false?
|
||||
end
|
||||
def test_condition
|
||||
assert_equal Vool::TrueConstant , @lst.condition.class
|
||||
assert_equal Sol::TrueConstant , @lst.condition.class
|
||||
end
|
||||
def test_to_s
|
||||
assert_tos "if (true);a = 1;else;a = 2;end" , @lst
|
||||
end
|
||||
end
|
||||
class TestIfStatementVoolHoisted < MiniTest::Test
|
||||
class TestIfStatementSolHoisted < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup
|
||||
@lst = compile("if(foo() == 1) ; a = 1 ; end").to_vool
|
||||
@lst = compile("if(foo() == 1) ; a = 1 ; end").to_sol
|
||||
end
|
||||
|
||||
def test_class
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
end
|
||||
def test_first_class
|
||||
assert_equal Vool::LocalAssignment , @lst.first.class
|
||||
assert_equal Sol::LocalAssignment , @lst.first.class
|
||||
end
|
||||
def test_last_class
|
||||
assert_equal Vool::IfStatement , @lst.last.class
|
||||
assert_equal Sol::IfStatement , @lst.last.class
|
||||
end
|
||||
def test_true
|
||||
assert_equal Vool::LocalAssignment , @lst.last.if_true.class
|
||||
assert_equal Sol::LocalAssignment , @lst.last.if_true.class
|
||||
end
|
||||
def test_condition
|
||||
assert_equal Vool::SendStatement , @lst.last.condition.class
|
||||
assert_equal Sol::SendStatement , @lst.last.condition.class
|
||||
assert_equal :== , @lst.last.condition.name
|
||||
end
|
||||
end
|
||||
|
@ -25,13 +25,13 @@ module Ruby
|
||||
class TestPlusEquals < Minitest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "X.plus_equals(1)").to_vool
|
||||
@lst = compile( "X.plus_equals(1)").to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::MacroExpression , @lst.class
|
||||
assert_equal Sol::MacroExpression , @lst.class
|
||||
end
|
||||
def test_arg1
|
||||
assert_equal Vool::IntegerConstant , @lst.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , @lst.arguments.first.class
|
||||
end
|
||||
def test_name
|
||||
assert_equal :plus_equals , @lst.name
|
||||
@ -40,22 +40,22 @@ module Ruby
|
||||
class TestPlusEqualsX < Minitest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile_main( "X.plus_equals(arg,1)").to_vool
|
||||
@lst = compile_main( "X.plus_equals(arg,1)").to_sol
|
||||
end
|
||||
def method_body
|
||||
@lst.body.first.body
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::ClassExpression , @lst.class
|
||||
assert_equal Vool::MethodExpression , @lst.body.first.class
|
||||
assert_equal Sol::ClassExpression , @lst.class
|
||||
assert_equal Sol::MethodExpression , @lst.body.first.class
|
||||
end
|
||||
def test_macro_class
|
||||
assert_equal Vool::ReturnStatement , method_body.class
|
||||
assert_equal Vool::MacroExpression , method_body.return_value.class
|
||||
assert_equal Sol::ReturnStatement , method_body.class
|
||||
assert_equal Sol::MacroExpression , method_body.return_value.class
|
||||
end
|
||||
def test_args
|
||||
assert_equal Vool::LocalVariable , method_body.return_value.arguments.first.class
|
||||
assert_equal Vool::IntegerConstant , method_body.return_value.arguments.last.class
|
||||
assert_equal Sol::LocalVariable , method_body.return_value.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , method_body.return_value.arguments.last.class
|
||||
end
|
||||
def test_name
|
||||
assert_equal :plus_equals , method_body.return_value.name
|
||||
|
@ -7,47 +7,47 @@ module Ruby
|
||||
class TestMethodStatementRet < MiniTest::Test
|
||||
include RubyTests
|
||||
def test_single_const
|
||||
@lst = compile( "def tryout(arg1, arg2) ; true ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; true ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.class
|
||||
end
|
||||
def test_single_instance
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.class
|
||||
end
|
||||
def test_single_call
|
||||
@lst = compile( "def tryout(arg1, arg2) ; is_true() ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; is_true() ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.class
|
||||
end
|
||||
|
||||
def test_multi_const
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a = some_call(); true ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.last.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a = some_call(); true ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.last.class
|
||||
end
|
||||
def test_multi_instance
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a = some_call(); @a ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.last.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a = some_call(); @a ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.last.class
|
||||
end
|
||||
def test_multi_call
|
||||
@lst = compile( "def tryout(arg1, arg2) ; is_true() ; some_call() ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.last.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; is_true() ; some_call() ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.last.class
|
||||
end
|
||||
|
||||
def test_return
|
||||
@lst = compile( "def tryout(arg1, arg2) ; return 1 ; end " ).to_vool
|
||||
assert_equal Vool::ReturnStatement , @lst.body.class
|
||||
assert_equal Vool::IntegerConstant , @lst.body.return_value.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; return 1 ; end " ).to_sol
|
||||
assert_equal Sol::ReturnStatement , @lst.body.class
|
||||
assert_equal Sol::IntegerConstant , @lst.body.return_value.class
|
||||
end
|
||||
def test_local_assign
|
||||
@lst = compile( "def tryout(arg1, arg2) ; a = 1 ; end " ).to_vool
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Vool::ReturnStatement , @lst.body.last.class
|
||||
assert_equal Vool::LocalVariable , @lst.body.last.return_value.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; a = 1 ; end " ).to_sol
|
||||
assert_equal Sol::Statements , @lst.body.class
|
||||
assert_equal Sol::ReturnStatement , @lst.body.last.class
|
||||
assert_equal Sol::LocalVariable , @lst.body.last.return_value.class
|
||||
end
|
||||
def test_local_assign
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a = 1 ; end " ).to_vool
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Vool::ReturnStatement , @lst.body.last.class
|
||||
assert_equal Vool::InstanceVariable , @lst.body.last.return_value.class
|
||||
@lst = compile( "def tryout(arg1, arg2) ; @a = 1 ; end " ).to_sol
|
||||
assert_equal Sol::Statements , @lst.body.class
|
||||
assert_equal Sol::ReturnStatement , @lst.body.last.class
|
||||
assert_equal Sol::InstanceVariable , @lst.body.last.return_value.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -4,30 +4,30 @@ module Ruby
|
||||
class TestSendRequireHelper < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "require_relative 'helper'").to_vool
|
||||
@lst = compile( "require_relative 'helper'").to_sol
|
||||
end
|
||||
def test_helper_class
|
||||
assert_equal Vool::ClassExpression , @lst.class
|
||||
assert_equal Sol::ClassExpression , @lst.class
|
||||
assert_equal :ParfaitTest , @lst.name
|
||||
end
|
||||
def test_methods
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Vool::MethodExpression , @lst.body.first.class
|
||||
assert_equal Sol::Statements , @lst.body.class
|
||||
assert_equal Sol::MethodExpression , @lst.body.first.class
|
||||
assert_equal :setup , @lst.body.first.name
|
||||
end
|
||||
end
|
||||
class TestSendRequireparfait < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "require_relative 'object'").to_vool
|
||||
@lst = compile( "require_relative 'object'").to_sol
|
||||
end
|
||||
def test_helper_class
|
||||
assert_equal Vool::ClassExpression , @lst.class
|
||||
assert_equal Sol::ClassExpression , @lst.class
|
||||
assert_equal :Object , @lst.name
|
||||
end
|
||||
def test_methods
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Vool::MethodExpression , @lst.body.first.class
|
||||
assert_equal Sol::Statements , @lst.body.class
|
||||
assert_equal Sol::MethodExpression , @lst.body.first.class
|
||||
assert_equal :type , @lst.body.first.name
|
||||
end
|
||||
end
|
||||
|
@ -21,30 +21,30 @@ module Ruby
|
||||
end
|
||||
|
||||
end
|
||||
class TestReturnStatementVool < MiniTest::Test
|
||||
class TestReturnStatementSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def test_return_const
|
||||
lst = compile( "return 1" ).to_vool
|
||||
assert_equal Vool::ReturnStatement , lst.class
|
||||
lst = compile( "return 1" ).to_sol
|
||||
assert_equal Sol::ReturnStatement , lst.class
|
||||
end
|
||||
def test_return_value
|
||||
lst = compile( "return 1" ).to_vool
|
||||
lst = compile( "return 1" ).to_sol
|
||||
assert_equal 1 , lst.return_value.value
|
||||
end
|
||||
|
||||
def test_return_send
|
||||
lst = compile( "return foo" ).to_vool
|
||||
assert_equal Vool::ReturnStatement , lst.class
|
||||
lst = compile( "return foo" ).to_sol
|
||||
assert_equal Sol::ReturnStatement , lst.class
|
||||
end
|
||||
def test_return_send3
|
||||
lst = compile( "return foo.bar.zoo" ).to_vool
|
||||
assert_equal Vool::LocalAssignment , lst.first.class
|
||||
lst = compile( "return foo.bar.zoo" ).to_sol
|
||||
assert_equal Sol::LocalAssignment , lst.first.class
|
||||
assert lst.first.name.to_s.start_with?("tmp_")
|
||||
end
|
||||
def test_return_send4
|
||||
lst = compile( "return foo.bar.zoo" ).to_vool
|
||||
assert_equal Vool::ReturnStatement, lst[2].class
|
||||
lst = compile( "return foo.bar.zoo" ).to_sol
|
||||
assert_equal Sol::ReturnStatement, lst[2].class
|
||||
assert_equal :zoo, lst[2].return_value.name
|
||||
end
|
||||
end
|
||||
|
@ -25,22 +25,22 @@ module Ruby
|
||||
assert_equal 1 , @lst.body.arguments.length
|
||||
end
|
||||
end
|
||||
class TestBlockStatementVool < MiniTest::Test
|
||||
class TestBlockStatementSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup()
|
||||
input = "plus_one{|arg1| arg1 + 1 } "
|
||||
@lst = compile( input ).to_vool
|
||||
@lst = compile( input ).to_sol
|
||||
end
|
||||
def test_block
|
||||
assert_equal Vool::SendStatement , @lst.class
|
||||
assert_equal Sol::SendStatement , @lst.class
|
||||
end
|
||||
def test_send_name
|
||||
assert_equal :plus_one , @lst.name
|
||||
end
|
||||
def test_send_block_arg
|
||||
assert_equal 1 , @lst.arguments.length
|
||||
assert_equal Vool::LambdaExpression , @lst.arguments.first.class
|
||||
assert_equal Sol::LambdaExpression , @lst.arguments.first.class
|
||||
end
|
||||
def test_block_args
|
||||
assert_equal [:arg1] , @lst.arguments.first.args
|
||||
|
@ -24,28 +24,28 @@ module Ruby
|
||||
assert_equal ReturnStatement , @lst.last.class
|
||||
end
|
||||
end
|
||||
class TestBlockReturnVool < MiniTest::Test
|
||||
class TestBlockReturnSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup()
|
||||
input = "a = plus_one{return 1 } ; return a "
|
||||
@lst = compile( input ).to_vool
|
||||
@lst = compile( input ).to_sol
|
||||
end
|
||||
def test_scope
|
||||
assert_equal Vool::ScopeStatement , @lst.class
|
||||
assert_equal Sol::ScopeStatement , @lst.class
|
||||
end
|
||||
def test_assign
|
||||
assert_equal Vool::LocalAssignment , @lst.first.class
|
||||
assert_equal Sol::LocalAssignment , @lst.first.class
|
||||
assert_equal :a , @lst.first.name
|
||||
end
|
||||
def test_send
|
||||
assert_equal Vool::SendStatement , @lst.first.value.class
|
||||
assert_equal Sol::SendStatement , @lst.first.value.class
|
||||
assert_equal :plus_one , @lst.first.value.name
|
||||
end
|
||||
def test_block_arg
|
||||
assert_equal Vool::LambdaExpression , @lst.first.value.arguments.first.class
|
||||
assert_equal Sol::LambdaExpression , @lst.first.value.arguments.first.class
|
||||
end
|
||||
def test_ret
|
||||
assert_equal Vool::ReturnStatement , @lst[1].class
|
||||
assert_equal Sol::ReturnStatement , @lst[1].class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,69 +1,69 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Ruby
|
||||
class TestSendNoArgVool < MiniTest::Test
|
||||
class TestSendNoArgSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "foo").to_vool
|
||||
@lst = compile( "foo").to_sol
|
||||
end
|
||||
def test_simple_class
|
||||
assert_equal Vool::SendStatement , @lst.class
|
||||
assert_equal Sol::SendStatement , @lst.class
|
||||
end
|
||||
def test_simple_name
|
||||
assert_equal :foo , @lst.name
|
||||
end
|
||||
def test_simple_receiver
|
||||
assert_equal Vool::SelfExpression , @lst.receiver.class
|
||||
assert_equal Sol::SelfExpression , @lst.receiver.class
|
||||
end
|
||||
def test_simple_args
|
||||
assert_equal [] , @lst.arguments
|
||||
end
|
||||
end
|
||||
class TestSendSimpleArgVool < MiniTest::Test
|
||||
class TestSendSimpleArgSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "bar(1)").to_vool
|
||||
@lst = compile( "bar(1)").to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::SendStatement , @lst.class
|
||||
assert_equal Sol::SendStatement , @lst.class
|
||||
end
|
||||
def test_name
|
||||
assert_equal :bar , @lst.name
|
||||
end
|
||||
def test_receiver
|
||||
assert_equal Vool::SelfExpression , @lst.receiver.class
|
||||
assert_equal Sol::SelfExpression , @lst.receiver.class
|
||||
end
|
||||
def test_args
|
||||
assert_equal Vool::IntegerConstant , @lst.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , @lst.arguments.first.class
|
||||
end
|
||||
end
|
||||
class TestSendSuperVool < MiniTest::Test
|
||||
class TestSendSuperSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def test_super0
|
||||
lst = compile( "super").to_vool
|
||||
assert_equal Vool::SuperStatement , lst.class
|
||||
lst = compile( "super").to_sol
|
||||
assert_equal Sol::SuperStatement , lst.class
|
||||
end
|
||||
def test_super0_receiver
|
||||
lst = compile( "super").to_vool
|
||||
assert_equal Vool::SelfExpression , lst.receiver.class
|
||||
lst = compile( "super").to_sol
|
||||
assert_equal Sol::SelfExpression , lst.receiver.class
|
||||
end
|
||||
end
|
||||
class TestSendSuperArgsVool < MiniTest::Test
|
||||
class TestSendSuperArgsSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "super(1)").to_vool
|
||||
@lst = compile( "super(1)").to_sol
|
||||
end
|
||||
def test_super_class
|
||||
assert_equal Vool::SuperStatement , @lst.class
|
||||
assert_equal Sol::SuperStatement , @lst.class
|
||||
end
|
||||
def test_super_receiver
|
||||
assert_equal Vool::SelfExpression , @lst.receiver.class
|
||||
assert_equal Sol::SelfExpression , @lst.receiver.class
|
||||
end
|
||||
def test_super_name
|
||||
assert_equal :super, @lst.name
|
||||
end
|
||||
end
|
||||
class TestSendReceiverTypeVool < MiniTest::Test
|
||||
class TestSendReceiverTypeSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup
|
||||
@ -71,12 +71,12 @@ module Ruby
|
||||
end
|
||||
|
||||
def test_int_receiver
|
||||
sent = compile( "5.div4").to_vool
|
||||
sent = compile( "5.div4").to_sol
|
||||
assert_equal Parfait::Type , sent.receiver.ct_type.class
|
||||
assert_equal "Integer_Type" , sent.receiver.ct_type.name
|
||||
end
|
||||
def test_string_receiver
|
||||
sent = compile( "'5'.putstring").to_vool
|
||||
sent = compile( "'5'.putstring").to_sol
|
||||
assert_equal Parfait::Type , sent.receiver.ct_type.class
|
||||
assert_equal "Word_Type" , sent.receiver.ct_type.name
|
||||
end
|
||||
@ -84,13 +84,13 @@ module Ruby
|
||||
class TestSendReceiver < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "call.once.more").to_vool
|
||||
@lst = compile( "call.once.more").to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
end
|
||||
def test_one
|
||||
assert_equal Vool::LocalAssignment , @lst.first.class
|
||||
assert_equal Sol::LocalAssignment , @lst.first.class
|
||||
end
|
||||
def test_one_name
|
||||
assert @lst[0].name.to_s.start_with?("tmp_")
|
||||
@ -105,7 +105,7 @@ module Ruby
|
||||
assert_equal :once , @lst[1].value.name
|
||||
end
|
||||
def test_three_class
|
||||
assert_equal Vool::SendStatement, @lst[2].class
|
||||
assert_equal Sol::SendStatement, @lst[2].class
|
||||
end
|
||||
def test_three_name
|
||||
assert_equal :more , @lst[2].name
|
||||
|
@ -4,67 +4,67 @@ module Ruby
|
||||
module LastBar
|
||||
include RubyTests
|
||||
def test_last_class
|
||||
assert_equal Vool::SendStatement , @lst.last.class
|
||||
assert_equal Sol::SendStatement , @lst.last.class
|
||||
end
|
||||
def test_last_name
|
||||
assert_equal :last , @lst.last.name
|
||||
end
|
||||
def test_last_arg
|
||||
assert_equal Vool::LocalVariable , @lst.last.arguments.first.class
|
||||
assert_equal Sol::LocalVariable , @lst.last.arguments.first.class
|
||||
end
|
||||
def test_lst_class
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
end
|
||||
def test_lst_no_statements
|
||||
@lst.statements.each{|st| assert( ! st.is_a?(Vool::Statements) , st.class)}
|
||||
@lst.statements.each{|st| assert( ! st.is_a?(Sol::Statements) , st.class)}
|
||||
end
|
||||
end
|
||||
class TestSendSendArgVool < MiniTest::Test
|
||||
class TestSendSendArgSol < MiniTest::Test
|
||||
include LastBar
|
||||
def setup
|
||||
@lst = compile( "last(foo(1))").to_vool
|
||||
@lst = compile( "last(foo(1))").to_sol
|
||||
end
|
||||
def test_classes
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Vool::LocalAssignment , @lst.first.class
|
||||
assert_equal Vool::SendStatement , @lst.last.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
assert_equal Sol::LocalAssignment , @lst.first.class
|
||||
assert_equal Sol::SendStatement , @lst.last.class
|
||||
end
|
||||
def test_foo1
|
||||
assert_equal Vool::SendStatement , @lst.first.value.class
|
||||
assert_equal Sol::SendStatement , @lst.first.value.class
|
||||
assert_equal :foo , @lst.first.value.name
|
||||
assert_equal Vool::IntegerConstant , @lst.first.value.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , @lst.first.value.arguments.first.class
|
||||
end
|
||||
end
|
||||
class Test3SendVool < MiniTest::Test
|
||||
class Test3SendSol < MiniTest::Test
|
||||
include LastBar
|
||||
def setup
|
||||
@lst = compile( "last(foo(more(1)))").to_vool
|
||||
@lst = compile( "last(foo(more(1)))").to_sol
|
||||
end
|
||||
def test_classes
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Vool::LocalAssignment , @lst.first.class
|
||||
assert_equal Vool::SendStatement , @lst.last.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
assert_equal Sol::LocalAssignment , @lst.first.class
|
||||
assert_equal Sol::SendStatement , @lst.last.class
|
||||
end
|
||||
def test_foo
|
||||
assert_equal Vool::SendStatement , @lst.first.value.class
|
||||
assert_equal Sol::SendStatement , @lst.first.value.class
|
||||
assert_equal :more , @lst.first.value.name
|
||||
assert_equal Vool::IntegerConstant , @lst.first.value.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , @lst.first.value.arguments.first.class
|
||||
end
|
||||
end
|
||||
class Test5SendVool < MiniTest::Test
|
||||
class Test5SendSol < MiniTest::Test
|
||||
include LastBar
|
||||
def setup
|
||||
@lst = compile( "last(foo(more(even_more(1),and_more(with_more))))").to_vool
|
||||
@lst = compile( "last(foo(more(even_more(1),and_more(with_more))))").to_sol
|
||||
end
|
||||
def test_classes
|
||||
assert_equal Vool::Statements , @lst.class
|
||||
assert_equal Vool::LocalAssignment , @lst.first.class
|
||||
assert_equal Vool::SendStatement , @lst.last.class
|
||||
assert_equal Sol::Statements , @lst.class
|
||||
assert_equal Sol::LocalAssignment , @lst.first.class
|
||||
assert_equal Sol::SendStatement , @lst.last.class
|
||||
end
|
||||
def test_foo
|
||||
assert_equal Vool::SendStatement , @lst.first.value.class
|
||||
assert_equal Sol::SendStatement , @lst.first.value.class
|
||||
assert_equal :even_more , @lst.first.value.name
|
||||
assert_equal Vool::IntegerConstant , @lst.first.value.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , @lst.first.value.arguments.first.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -8,15 +8,15 @@ module Ruby
|
||||
assert_equal "Statement" , Statement.new.class_name
|
||||
end
|
||||
def test_brother
|
||||
assert_equal Vool::Statement , Statement.new.vool_brother
|
||||
assert_equal Sol::Statement , Statement.new.sol_brother
|
||||
end
|
||||
def test_yield
|
||||
lst = compile( "yield")
|
||||
assert_equal Vool::YieldStatement , lst.vool_brother
|
||||
assert_equal Sol::YieldStatement , lst.sol_brother
|
||||
end
|
||||
def test_assign
|
||||
lst = compile( "a = 4")
|
||||
assert_equal Vool::LocalAssignment , lst.vool_brother
|
||||
assert_equal Sol::LocalAssignment , lst.sol_brother
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -52,38 +52,38 @@ module Ruby
|
||||
assert_equal :Module , lst.name
|
||||
end
|
||||
end
|
||||
class TestVariablesVool < MiniTest::Test
|
||||
class TestVariablesSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def test_local_basic
|
||||
lst = compile( "foo = 1 ; return foo").to_vool
|
||||
assert_equal Vool::LocalVariable , lst.statements[1].return_value.class
|
||||
lst = compile( "foo = 1 ; return foo").to_sol
|
||||
assert_equal Sol::LocalVariable , lst.statements[1].return_value.class
|
||||
end
|
||||
|
||||
def test_instance_basic
|
||||
lst = compile( "@var" ).to_vool
|
||||
assert_equal Vool::InstanceVariable , lst.class
|
||||
lst = compile( "@var" ).to_sol
|
||||
assert_equal Sol::InstanceVariable , lst.class
|
||||
assert_equal :var , lst.name
|
||||
end
|
||||
|
||||
def test_instance_return
|
||||
lst = compile( "return @var" ).to_vool
|
||||
assert_equal Vool::InstanceVariable , lst.return_value.class
|
||||
lst = compile( "return @var" ).to_sol
|
||||
assert_equal Sol::InstanceVariable , lst.return_value.class
|
||||
end
|
||||
|
||||
def test_class_basic
|
||||
lst = compile( "@@var" ).to_vool
|
||||
assert_equal Vool::ClassVariable , lst.class
|
||||
lst = compile( "@@var" ).to_sol
|
||||
assert_equal Sol::ClassVariable , lst.class
|
||||
assert_equal :var , lst.name
|
||||
end
|
||||
|
||||
def test_class_return
|
||||
lst = compile( "return @@var" ).to_vool
|
||||
assert_equal Vool::ClassVariable , lst.return_value.class
|
||||
lst = compile( "return @@var" ).to_sol
|
||||
assert_equal Sol::ClassVariable , lst.return_value.class
|
||||
end
|
||||
|
||||
def test_module_basic
|
||||
lst = compile( "Module" ).to_vool
|
||||
assert_equal Vool::ModuleName , lst.class
|
||||
lst = compile( "Module" ).to_sol
|
||||
assert_equal Sol::ModuleName , lst.class
|
||||
assert_equal :Module , lst.name
|
||||
end
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
require_relative 'helper'
|
||||
|
||||
module Ruby
|
||||
class TestWhileStatementVool < MiniTest::Test
|
||||
class TestWhileStatementSol < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "while(@arg) ; @arg = 1 ; end" ).to_vool
|
||||
@lst = compile( "while(@arg) ; @arg = 1 ; end" ).to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::WhileStatement , @lst.class
|
||||
assert_equal Sol::WhileStatement , @lst.class
|
||||
end
|
||||
def test_body_class
|
||||
assert_equal Vool::IvarAssignment , @lst.body.class
|
||||
assert_equal Sol::IvarAssignment , @lst.body.class
|
||||
end
|
||||
def test_condition_class
|
||||
assert_equal Vool::InstanceVariable , @lst.condition.class
|
||||
assert_equal Sol::InstanceVariable , @lst.condition.class
|
||||
end
|
||||
def test_no_hoist
|
||||
assert_nil @lst.hoisted
|
||||
@ -22,20 +22,20 @@ module Ruby
|
||||
class TestWhileStatementHoist < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "while(call(arg > 1)) ; arg = 1 ; end" ).to_vool
|
||||
@lst = compile( "while(call(arg > 1)) ; arg = 1 ; end" ).to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal Vool::WhileStatement , @lst.class
|
||||
assert_equal Vool::LocalAssignment , @lst.body.class
|
||||
assert_equal Sol::WhileStatement , @lst.class
|
||||
assert_equal Sol::LocalAssignment , @lst.body.class
|
||||
end
|
||||
def test_condition_class
|
||||
assert_equal Vool::SendStatement , @lst.condition.class
|
||||
assert_equal Sol::SendStatement , @lst.condition.class
|
||||
end
|
||||
def test_hoist
|
||||
assert_equal Vool::Statements , @lst.hoisted.class
|
||||
assert_equal Sol::Statements , @lst.hoisted.class
|
||||
end
|
||||
def test_hoist_is_assi
|
||||
assert_equal Vool::LocalAssignment , @lst.hoisted.first.class
|
||||
assert_equal Sol::LocalAssignment , @lst.hoisted.first.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -18,18 +18,18 @@ module Ruby
|
||||
assert_equal "yield(0)" , @lst.to_s
|
||||
end
|
||||
end
|
||||
class TestYieldStatementVool < MiniTest::Test
|
||||
class TestYieldStatementSol < MiniTest::Test
|
||||
include RubyTests
|
||||
|
||||
def setup()
|
||||
input = "yield(0)"
|
||||
@lst = compile( input ).to_vool
|
||||
@lst = compile( input ).to_sol
|
||||
end
|
||||
def test_block
|
||||
assert_equal Vool::YieldStatement , @lst.class
|
||||
assert_equal Sol::YieldStatement , @lst.class
|
||||
end
|
||||
def test_block_args
|
||||
assert_equal Vool::IntegerConstant , @lst.arguments.first.class
|
||||
assert_equal Sol::IntegerConstant , @lst.arguments.first.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -5,18 +5,18 @@ module RubyX
|
||||
module RubyXHelper
|
||||
def setup
|
||||
end
|
||||
def ruby_to_vool(input, options = {})
|
||||
def ruby_to_sol(input, options = {})
|
||||
options = RubyX.default_test_options.merge(options)
|
||||
RubyXCompiler.new(options).ruby_to_vool(input)
|
||||
RubyXCompiler.new(options).ruby_to_sol(input)
|
||||
end
|
||||
def ruby_to_slot(input , options = {})
|
||||
options = RubyX.default_test_options.merge(options)
|
||||
RubyXCompiler.new(options).ruby_to_slot(input)
|
||||
end
|
||||
def compile_in_test( input , options = {})
|
||||
vool = ruby_to_vool(in_Test(input) , options)
|
||||
vool.to_parfait
|
||||
vool.to_slot(nil)
|
||||
sol = ruby_to_sol(in_Test(input) , options)
|
||||
sol.to_parfait
|
||||
sol.to_slot(nil)
|
||||
itest = Parfait.object_space.get_class_by_name(:Test)
|
||||
assert itest
|
||||
itest
|
||||
|
@ -8,10 +8,10 @@ Since we need Parfait in the runtime, we need to parse it and compile it.
|
||||
And since it is early days, we expect errors at every level during this process, which
|
||||
means testing every layer for every file.
|
||||
|
||||
Rather than create parfait tests for every layer (ie in the vool/slot_machine/risc directories)
|
||||
Rather than create parfait tests for every layer (ie in the sol/slot_machine/risc directories)
|
||||
we have one file per parfait file here. Each file tests all layers.
|
||||
|
||||
The usual workflow is to start with a new file and create tests for vool, slot_machine, risc,binary
|
||||
The usual workflow is to start with a new file and create tests for sol, slot_machine, risc,binary
|
||||
in that order. Possibly fixing the compiler on the way. Then adding the file to
|
||||
the RubyXCompiler parfait load list.
|
||||
|
||||
|
@ -8,7 +8,7 @@ module RubyX
|
||||
|
||||
def setup
|
||||
@compiler = compiler
|
||||
@compiler.ruby_to_vool load_parfait(:object)
|
||||
@compiler.ruby_to_sol load_parfait(:object)
|
||||
end
|
||||
def source
|
||||
load_parfait(:data_object)
|
||||
@ -17,15 +17,15 @@ module RubyX
|
||||
assert source.include?("class DataObject")
|
||||
assert source.length > 1500 , source.length
|
||||
end
|
||||
def test_vool
|
||||
vool = @compiler.ruby_to_vool source
|
||||
assert_equal Vool::ScopeStatement , vool.class
|
||||
assert_equal Vool::ClassExpression , vool[0].class
|
||||
assert_equal Vool::ClassExpression , vool[1].class
|
||||
assert_equal Vool::ClassExpression , vool[2].class
|
||||
assert_equal :DataObject , vool[1].name
|
||||
assert_equal :Data4 , vool[2].name
|
||||
assert_equal :Data8 , vool[3].name
|
||||
def test_sol
|
||||
sol = @compiler.ruby_to_sol source
|
||||
assert_equal Sol::ScopeStatement , sol.class
|
||||
assert_equal Sol::ClassExpression , sol[0].class
|
||||
assert_equal Sol::ClassExpression , sol[1].class
|
||||
assert_equal Sol::ClassExpression , sol[2].class
|
||||
assert_equal :DataObject , sol[1].name
|
||||
assert_equal :Data4 , sol[2].name
|
||||
assert_equal :Data8 , sol[3].name
|
||||
end
|
||||
def test_slot
|
||||
slot = @compiler.ruby_to_slot source
|
||||
|
@ -5,8 +5,8 @@ module RubyX
|
||||
include ParfaitHelper
|
||||
def setup
|
||||
@compiler = compiler
|
||||
@compiler.ruby_to_vool load_parfait(:object)
|
||||
@compiler.ruby_to_vool load_parfait(:data_object)
|
||||
@compiler.ruby_to_sol load_parfait(:object)
|
||||
@compiler.ruby_to_sol load_parfait(:data_object)
|
||||
end
|
||||
def source
|
||||
get_preload("Space.main") + load_parfait(:integer)
|
||||
@ -15,21 +15,21 @@ module RubyX
|
||||
assert source.include?("class Integer")
|
||||
assert source.length > 1500 , source.length
|
||||
end
|
||||
def test_vool
|
||||
vool = @compiler.ruby_to_vool source
|
||||
assert_equal Vool::ScopeStatement , vool.class
|
||||
assert_equal Vool::ClassExpression , vool[0].class
|
||||
assert_equal Vool::ClassExpression , vool[1].class
|
||||
assert_equal Vool::ClassExpression , vool[2].class
|
||||
assert_equal :DataObject , vool[1].name
|
||||
assert_equal :Data4 , vool[2].name
|
||||
assert_equal :Data8 , vool[3].name
|
||||
def test_sol
|
||||
sol = @compiler.ruby_to_sol source
|
||||
assert_equal Sol::ScopeStatement , sol.class
|
||||
assert_equal Sol::ClassExpression , sol[0].class
|
||||
assert_equal Sol::ClassExpression , sol[1].class
|
||||
assert_equal Sol::ClassExpression , sol[2].class
|
||||
assert_equal :DataObject , sol[1].name
|
||||
assert_equal :Data4 , sol[2].name
|
||||
assert_equal :Data8 , sol[3].name
|
||||
end
|
||||
def test_slot
|
||||
vool = @compiler.ruby_to_vool source
|
||||
vool.to_parfait
|
||||
#puts vool
|
||||
slot = vool.to_slot(nil)
|
||||
sol = @compiler.ruby_to_sol source
|
||||
sol.to_parfait
|
||||
#puts sol
|
||||
slot = sol.to_slot(nil)
|
||||
assert_equal SlotMachine::SlotCollection , slot.class
|
||||
end
|
||||
def est_risc
|
||||
|
@ -13,10 +13,10 @@ module RubyX
|
||||
assert source.include?("class Object")
|
||||
assert source.length > 2000
|
||||
end
|
||||
def test_vool
|
||||
vool = compiler.ruby_to_vool source
|
||||
assert_equal Vool::ClassExpression , vool.class
|
||||
assert_equal :Object , vool.name
|
||||
def test_sol
|
||||
sol = compiler.ruby_to_sol source
|
||||
assert_equal Sol::ClassExpression , sol.class
|
||||
assert_equal :Object , sol.name
|
||||
end
|
||||
def test_slot
|
||||
slot = compiler.ruby_to_slot source
|
||||
|
@ -25,26 +25,26 @@ module RubyX
|
||||
assert_equal Ruby::ClassStatement , compiled[2].class
|
||||
assert_equal :TestObject , compiled[2].name
|
||||
end
|
||||
def test_vool_object
|
||||
vool = Ruby::RubyCompiler.compile(@input).to_vool
|
||||
assert_equal Vool::ScopeStatement , vool.class
|
||||
assert_equal Vool::ClassExpression , vool.first.class
|
||||
def test_sol_object
|
||||
sol = Ruby::RubyCompiler.compile(@input).to_sol
|
||||
assert_equal Sol::ScopeStatement , sol.class
|
||||
assert_equal Sol::ClassExpression , sol.first.class
|
||||
end
|
||||
def test_vool_helper
|
||||
vool = Ruby::RubyCompiler.compile(@input).to_vool
|
||||
assert_equal Vool::ClassExpression , vool[1].class
|
||||
assert_equal :ParfaitTest , vool[1].name
|
||||
def test_sol_helper
|
||||
sol = Ruby::RubyCompiler.compile(@input).to_sol
|
||||
assert_equal Sol::ClassExpression , sol[1].class
|
||||
assert_equal :ParfaitTest , sol[1].name
|
||||
end
|
||||
def test_vool_test
|
||||
vool = Ruby::RubyCompiler.compile(@input).to_vool
|
||||
assert_equal Vool::ClassExpression , vool[2].class
|
||||
assert_equal :TestObject , vool[2].name
|
||||
def test_sol_test
|
||||
sol = Ruby::RubyCompiler.compile(@input).to_sol
|
||||
assert_equal Sol::ClassExpression , sol[2].class
|
||||
assert_equal :TestObject , sol[2].name
|
||||
end
|
||||
def test_vool_methods
|
||||
vool = Ruby::RubyCompiler.compile(@input).to_vool
|
||||
assert_equal Vool::Statements , vool[2].body.class
|
||||
vool[2].body.statements.each do |st|
|
||||
assert_equal Vool::MethodExpression , st.class
|
||||
def test_sol_methods
|
||||
sol = Ruby::RubyCompiler.compile(@input).to_sol
|
||||
assert_equal Sol::Statements , sol[2].body.class
|
||||
sol[2].body.statements.each do |st|
|
||||
assert_equal Sol::MethodExpression , st.class
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -54,15 +54,15 @@ module RubyX
|
||||
|
||||
def self.runnable_methods
|
||||
input = load_parfait(:object) + load_parfait_test(:object)
|
||||
vool = Ruby::RubyCompiler.compile(input).to_vool
|
||||
sol = Ruby::RubyCompiler.compile(input).to_sol
|
||||
tests = [ ]
|
||||
vool[2].body.statements.each do |method|
|
||||
sol[2].body.statements.each do |method|
|
||||
tests << method.name
|
||||
self.send(:define_method, method.name ) do
|
||||
code = input + <<MAIN
|
||||
class Space
|
||||
def main(args)
|
||||
test = #{vool[2].name}.new
|
||||
test = #{sol[2].name}.new
|
||||
test.setup
|
||||
test.#{method.name}
|
||||
end
|
||||
|
@ -16,15 +16,15 @@ module RubyX
|
||||
end
|
||||
|
||||
def test_class_body_is_scope
|
||||
clazz = ruby_to_vool in_Test("def meth; @ivar = 5 ;end")
|
||||
assert_equal Vool::Statements , clazz.body.class
|
||||
assert_equal Vool::MethodExpression , clazz.body.first.class
|
||||
clazz = ruby_to_sol in_Test("def meth; @ivar = 5 ;end")
|
||||
assert_equal Sol::Statements , clazz.body.class
|
||||
assert_equal Sol::MethodExpression , clazz.body.first.class
|
||||
end
|
||||
|
||||
def test_space_is_unchanged_by_compile
|
||||
compiler = RubyXCompiler.new(RubyX.default_test_options)
|
||||
space1 = Parfait.object_space.get_class_by_name(:Space)
|
||||
compiler.ruby_to_vool "class Space ;end"
|
||||
compiler.ruby_to_sol "class Space ;end"
|
||||
space2 = Parfait.object_space.get_class_by_name(:Space)
|
||||
assert_equal space1 , space2
|
||||
end
|
||||
@ -32,7 +32,7 @@ module RubyX
|
||||
def test_space_type_is_unchanged_by_compile
|
||||
compiler = RubyXCompiler.new(RubyX.default_test_options)
|
||||
space1 = Parfait.object_space.get_type_by_class_name(:Space)
|
||||
compiler.ruby_to_vool "class Space ;end"
|
||||
compiler.ruby_to_sol "class Space ;end"
|
||||
space2 = Parfait.object_space.get_type_by_class_name(:Space)
|
||||
assert_equal space1 , space2
|
||||
end
|
||||
|
@ -27,7 +27,7 @@ module RubyX
|
||||
def test_space_type_is_unchanged_by_compile
|
||||
compiler = RubyXCompiler.new(RubyX.default_test_options)
|
||||
space1 = Parfait.object_space.get_type_by_class_name(:Space)
|
||||
compiler.ruby_to_vool "class Space ;end"
|
||||
compiler.ruby_to_sol "class Space ;end"
|
||||
space2 = Parfait.object_space.get_type_by_class_name(:Space)
|
||||
assert_equal space1 , space2
|
||||
end
|
||||
|
@ -38,7 +38,7 @@ module RubyX
|
||||
|
||||
def test_load
|
||||
object = Parfait.object_space.get_class_by_name(:Object)
|
||||
assert_equal Parfait::VoolMethod , object.get_instance_method(:set_type).class
|
||||
assert_equal Parfait::SolMethod , object.get_instance_method(:set_type).class
|
||||
assert_equal Parfait::CallableMethod , object.instance_type.get_method(:set_type).class
|
||||
end
|
||||
end
|
||||
|
@ -17,23 +17,23 @@ module RubyX
|
||||
@linker = RubyXCompiler.ruby_to_binary(space_source_for("main"), RubyX.interpreter_test_options)
|
||||
assert_equal Risc::Linker , @linker.class
|
||||
end
|
||||
def test_one_vool_call
|
||||
def test_one_sol_call
|
||||
compiler = RubyXCompiler.new(RubyX.default_test_options)
|
||||
compiler.ruby_to_vool(space_source_for("main"))
|
||||
assert_equal Vool::ClassExpression , compiler.vool.class
|
||||
compiler.ruby_to_sol(space_source_for("main"))
|
||||
assert_equal Sol::ClassExpression , compiler.sol.class
|
||||
end
|
||||
def test_two_vool_calls
|
||||
def test_two_sol_calls
|
||||
compiler = RubyXCompiler.new(RubyX.default_test_options)
|
||||
compiler.ruby_to_vool(space_source_for("main"))
|
||||
compiler.ruby_to_vool(space_source_for("twain"))
|
||||
assert_equal Vool::ScopeStatement , compiler.vool.class
|
||||
assert_equal 2 , compiler.vool.length
|
||||
compiler.ruby_to_sol(space_source_for("main"))
|
||||
compiler.ruby_to_sol(space_source_for("twain"))
|
||||
assert_equal Sol::ScopeStatement , compiler.sol.class
|
||||
assert_equal 2 , compiler.sol.length
|
||||
end
|
||||
def test_bin_two_sources
|
||||
compiler = RubyXCompiler.new(RubyX.default_test_options)
|
||||
compiler.ruby_to_vool(space_source_for("main"))
|
||||
compiler.ruby_to_vool(space_source_for("twain"))
|
||||
assert_equal 2 , compiler.vool.length
|
||||
compiler.ruby_to_sol(space_source_for("main"))
|
||||
compiler.ruby_to_sol(space_source_for("twain"))
|
||||
assert_equal 2 , compiler.sol.length
|
||||
linker = compiler.to_binary(:interpreter)
|
||||
assert_equal Risc::Linker , linker.class
|
||||
assert_equal 4 , linker.assemblers.length
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestBlockArg < MiniTest::Test
|
||||
include SlotMachineCompile
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassStatementSlotMachine < MiniTest::Test
|
||||
include SlotMachineCompile
|
||||
|
||||
|
@ -7,21 +7,21 @@ module SlotMachine
|
||||
def setup
|
||||
end
|
||||
|
||||
def in_test_vool(str)
|
||||
vool = RubyX::RubyXCompiler.new(RubyX.default_test_options).ruby_to_vool(in_Test(str))
|
||||
vool.to_parfait
|
||||
vool.to_slot(nil)
|
||||
vool
|
||||
def in_test_sol(str)
|
||||
sol = RubyX::RubyXCompiler.new(RubyX.default_test_options).ruby_to_sol(in_Test(str))
|
||||
sol.to_parfait
|
||||
sol.to_slot(nil)
|
||||
sol
|
||||
end
|
||||
def create_method(body = "@ivar = 5;return")
|
||||
in_test_vool("def meth; #{body};end")
|
||||
in_test_sol("def meth; #{body};end")
|
||||
test = Parfait.object_space.get_class_by_name(:Test)
|
||||
test.get_instance_method(:meth)
|
||||
end
|
||||
|
||||
def test_method_has_source
|
||||
method = create_method
|
||||
assert_equal Vool::Statements , method.source.class
|
||||
assert_equal Sol::Statements , method.source.class
|
||||
end
|
||||
|
||||
def test_method_has_no_locals
|
||||
@ -37,24 +37,24 @@ module SlotMachine
|
||||
def test_creates_method_in_class
|
||||
method = create_method
|
||||
assert method , "No method created"
|
||||
assert_equal Parfait::VoolMethod , method.class
|
||||
assert_equal Parfait::SolMethod , method.class
|
||||
end
|
||||
|
||||
def test_creates_method_statement_in_class
|
||||
clazz = in_test_vool("def meth; @ivar = 5 ;return;end")
|
||||
assert_equal Vool::Statements , clazz.body.class
|
||||
assert_equal Vool::MethodExpression , clazz.body.first.class
|
||||
clazz = in_test_sol("def meth; @ivar = 5 ;return;end")
|
||||
assert_equal Sol::Statements , clazz.body.class
|
||||
assert_equal Sol::MethodExpression , clazz.body.first.class
|
||||
end
|
||||
|
||||
def test_callable_method_instance_type
|
||||
in_test_vool("def meth; @ivar = 5; @ibar = 4;return;end")
|
||||
in_test_sol("def meth; @ivar = 5; @ibar = 4;return;end")
|
||||
test = Parfait.object_space.get_class_by_name(:Test)
|
||||
method = test.instance_type.get_method(:meth)
|
||||
assert_equal 1, method.self_type.variable_index(:ivar)
|
||||
assert_equal 2, method.self_type.variable_index(:ibar)
|
||||
end
|
||||
def test_callable_method_has_one_local
|
||||
in_test_vool("def meth; local = 5 ; a = 6;return;end")
|
||||
in_test_sol("def meth; local = 5 ; a = 6;return;end")
|
||||
test = Parfait.object_space.get_class_by_name(:Test)
|
||||
method = test.get_instance_method(:meth)
|
||||
assert_equal 3 , method.frame_type.instance_length
|
||||
|
@ -1,9 +1,9 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassDef < MiniTest::Test
|
||||
include SlotMachine
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def class_main
|
||||
<<-eos
|
@ -1,9 +1,9 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassInstance < MiniTest::Test
|
||||
include SlotMachine
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def class_main
|
||||
<<-eos
|
@ -1,9 +1,9 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassSendInherited < MiniTest::Test
|
||||
include SlotMachine
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def class_main
|
||||
<<-eos
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendClassSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def class_main
|
||||
<<-eos
|
@ -1,8 +1,8 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module VoolBlocks
|
||||
module SolBlocks
|
||||
class TestAssignSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@ins = compile_main_block( "local = 5" )
|
||||
@ -28,7 +28,7 @@ module VoolBlocks
|
||||
end
|
||||
|
||||
class TestAssignSlotMachineInstanceToLocal < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
def setup
|
||||
@ins = compile_main_block( "local = @a" , "@a = 5") #second arg in method scope
|
||||
end
|
||||
@ -44,7 +44,7 @@ module VoolBlocks
|
||||
end
|
||||
|
||||
class TestAssignToArg < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@ins = compile_main_block( "arg = 5")
|
||||
@ -62,7 +62,7 @@ module VoolBlocks
|
||||
end
|
||||
|
||||
class TestAssignSlotMachineToInstance < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
def setup
|
||||
end
|
||||
def test_assigns_const
|
@ -1,6 +1,6 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module VoolBlocks
|
||||
module SolBlocks
|
||||
class TestClassAssignSlotMachine < MiniTest::Test
|
||||
|
||||
def setup
|
||||
@ -11,18 +11,18 @@ module VoolBlocks
|
||||
end
|
||||
def test_block_not_compiles
|
||||
source = "main{|val| val = 0}"
|
||||
vool = Ruby::RubyCompiler.compile( as_class_method(source) ).to_vool
|
||||
vool.to_parfait
|
||||
sol = Ruby::RubyCompiler.compile( as_class_method(source) ).to_sol
|
||||
sol.to_parfait
|
||||
begin
|
||||
vool.to_slot(nil)
|
||||
sol.to_slot(nil)
|
||||
rescue => err
|
||||
assert err.message.include?("Blocks") , err.message
|
||||
end
|
||||
end
|
||||
def test_assign_compiles
|
||||
vool = Ruby::RubyCompiler.compile( as_class_method("val = 0") ).to_vool
|
||||
vool.to_parfait
|
||||
assert_equal SlotMachine::SlotCollection , vool.to_slot(nil).class
|
||||
sol = Ruby::RubyCompiler.compile( as_class_method("val = 0") ).to_sol
|
||||
sol.to_parfait
|
||||
assert_equal SlotMachine::SlotCollection , sol.to_slot(nil).class
|
||||
end
|
||||
end
|
||||
end
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module VoolBlocks
|
||||
module SolBlocks
|
||||
class TestConditionIfSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@ins = compile_main_block( "if(5.div4) ; @a = 6 ; else; @a = 5 ; end" , "local=5", "Integer.div4")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module VoolBlocks
|
||||
module SolBlocks
|
||||
class TestSimpleWhileSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@ins = compile_main_block( "while(@a) ; @a = 5 ; end")
|
@ -1,9 +1,9 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
# relies on @ins and receiver_type method
|
||||
module SimpleSendHarness
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
include SlotMachine
|
||||
|
||||
def setup
|
@ -1,8 +1,8 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendCachedSimpleSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "5.div8")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendArgsSendSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "a = main(4.div4);return a" , "Integer.div4")
|
@ -1,8 +1,8 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendCachedSimpleSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "a = 5; a.div4;return ")
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendSelfSlotMachine < MiniTest::Test
|
||||
include SimpleSendHarness
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendSimpleSlotMachine < MiniTest::Test
|
||||
include SimpleSendHarness
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSendSimpleArgsSlotMachine < MiniTest::Test
|
||||
include SimpleSendHarness
|
||||
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestAssignSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "local = 5;return")
|
||||
@ -31,7 +31,7 @@ module Vool
|
||||
|
||||
#otherwise as above, but assigning instance, so should get a SlotLoad
|
||||
class TestAssignSlotMachineInstanceToLocal < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
def setup
|
||||
@compiler = compile_main( "@a = 5 ; local = @a;return")
|
||||
@ins = @compiler.slot_instructions.next
|
||||
@ -43,7 +43,7 @@ module Vool
|
||||
|
||||
#compiling to an argument should result in different second parameter in the slot array
|
||||
class TestAssignToArg < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "arg = 5;return")
|
||||
@ -65,7 +65,7 @@ module Vool
|
||||
end
|
||||
|
||||
class TestAssignSlotMachineToInstance < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
end
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestBuiltin < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
@ -12,9 +12,9 @@ module Vool
|
||||
@ruby = Ruby::RubyCompiler.compile(@code)
|
||||
end
|
||||
def as_slot
|
||||
vool = as_ruby.to_vool
|
||||
vool.to_parfait
|
||||
vool.to_slot(nil)
|
||||
sol = as_ruby.to_sol
|
||||
sol.to_parfait
|
||||
sol.to_slot(nil)
|
||||
end
|
||||
def test_boot
|
||||
assert_equal String , @code.class
|
||||
@ -25,16 +25,16 @@ module Vool
|
||||
assert_equal Ruby::MethodStatement , @ruby.body.first.class
|
||||
assert_equal :+ , @ruby.body.first.name
|
||||
end
|
||||
def test_compile_vool
|
||||
vool = as_ruby.to_vool
|
||||
assert_equal Vool::ClassExpression , vool.class
|
||||
assert_equal Vool::MethodExpression , vool.body.first.class
|
||||
def test_compile_sol
|
||||
sol = as_ruby.to_sol
|
||||
assert_equal Sol::ClassExpression , sol.class
|
||||
assert_equal Sol::MethodExpression , sol.body.first.class
|
||||
end
|
||||
def test_vool_method
|
||||
vool = as_ruby.to_vool
|
||||
assert_equal :+ , vool.body.first.name
|
||||
assert_equal Vool::ReturnStatement , vool.body.first.body.class
|
||||
assert_equal Vool::MacroExpression , vool.body.first.body.return_value.class
|
||||
def test_sol_method
|
||||
sol = as_ruby.to_sol
|
||||
assert_equal :+ , sol.body.first.name
|
||||
assert_equal Sol::ReturnStatement , sol.body.first.body.class
|
||||
assert_equal Sol::MacroExpression , sol.body.first.body.return_value.class
|
||||
end
|
||||
def test_slot_basic
|
||||
slot = as_slot
|
@ -1,32 +1,32 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassStatement < MiniTest::Test
|
||||
include ScopeHelper
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
ruby_tree = Ruby::RubyCompiler.compile( as_test_main("@a = 5") )
|
||||
@vool = ruby_tree.to_vool
|
||||
@sol = ruby_tree.to_sol
|
||||
end
|
||||
def test_class
|
||||
assert_equal ClassExpression , @vool.class
|
||||
assert_equal :Test , @vool.name
|
||||
assert_equal ClassExpression , @sol.class
|
||||
assert_equal :Test , @sol.name
|
||||
end
|
||||
def test_method
|
||||
assert_equal MethodExpression , @vool.body.first.class
|
||||
assert_equal MethodExpression , @sol.body.first.class
|
||||
end
|
||||
def test_create_class
|
||||
assert_equal Parfait::Class , @vool.create_class_object.class
|
||||
assert_equal Parfait::Class , @sol.create_class_object.class
|
||||
end
|
||||
def test_create_class
|
||||
assert_equal :Test , @vool.to_parfait.name
|
||||
assert_equal :Test , @sol.to_parfait.name
|
||||
end
|
||||
def test_class_instance
|
||||
assert_equal :a , @vool.to_parfait.instance_type.names[1]
|
||||
assert_equal :a , @sol.to_parfait.instance_type.names[1]
|
||||
end
|
||||
def test_to_s
|
||||
assert_tos "class Test < Object;def main(arg);@a = 5;return @a;end;end" , @vool
|
||||
assert_tos "class Test < Object;def main(arg);@a = 5;return @a;end;end" , @sol
|
||||
end
|
||||
end
|
||||
class TestClassStatementTypeCreation < MiniTest::Test
|
||||
@ -36,9 +36,9 @@ module Vool
|
||||
end
|
||||
def check_type_for(input)
|
||||
ruby_tree = Ruby::RubyCompiler.compile( as_test_main(input) )
|
||||
vool = ruby_tree.to_vool
|
||||
assert_equal ClassExpression , vool.class
|
||||
clazz = vool.to_parfait
|
||||
sol = ruby_tree.to_sol
|
||||
assert_equal ClassExpression , sol.class
|
||||
clazz = sol.to_parfait
|
||||
assert_equal Parfait::Class , clazz.class
|
||||
assert_equal :a , clazz.instance_type.names[1]
|
||||
end
|
||||
@ -76,8 +76,8 @@ module Vool
|
||||
as_test_main("return 1") + ";class Test < Space ; def main();return 1;end;end"
|
||||
end
|
||||
def test_mismatch
|
||||
vool_tree = Ruby::RubyCompiler.compile( space_test).to_vool
|
||||
assert_raises {vool_tree.to_parfait}
|
||||
sol_tree = Ruby::RubyCompiler.compile( space_test).to_sol
|
||||
assert_raises {sol_tree.to_parfait}
|
||||
end
|
||||
end
|
||||
end
|
@ -1,9 +1,9 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassStatementCompile < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "if(@a) ; @a = 5 ; else; @a = 6 ; end; return")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestClassMethodExpression < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def class_code
|
||||
"class Space;def self.meth; return meth(22 + 22) ; end;end"
|
||||
@ -10,7 +10,7 @@ module Vool
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
ruby_tree = Ruby::RubyCompiler.compile( class_code )
|
||||
@clazz = ruby_tree.to_vool
|
||||
@clazz = ruby_tree.to_sol
|
||||
end
|
||||
def method
|
||||
@clazz.body.first
|
@ -1,9 +1,9 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestIfNoElse < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "if(@a) ; @a = 5 ; end;return")
|
@ -1,9 +1,9 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestIfNoIf < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "unless(@a) ; @a = 5 ; end;return")
|
@ -1,9 +1,9 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSimpleIfSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "if(@a) ; @a = 5 ; else; @a = 6 ; end;return")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestConditionIfSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "if(5.div4) ; @a = 6 ; else; @a = 5 ; end;return" , "Integer.div4")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestIvarSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "@a = 5")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestLocalSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "a = 5")
|
||||
@ -33,7 +33,7 @@ module Vool
|
||||
end
|
||||
|
||||
class TestArgSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
@ -13,9 +13,9 @@ module SlotMachine
|
||||
end
|
||||
end
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestMacroSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "X.plus_equals(arg,1)")
|
||||
@ -26,11 +26,11 @@ module Vool
|
||||
assert_equal SlotMachine::PlusEquals , @ins.class , @ins
|
||||
end
|
||||
def test_arg1
|
||||
assert_equal Vool::LocalVariable , @ins.a.class
|
||||
assert_equal Sol::LocalVariable , @ins.a.class
|
||||
assert_equal :arg , @ins.a.name
|
||||
end
|
||||
def test_arg2
|
||||
assert_equal Vool::IntegerConstant , @ins.b.class
|
||||
assert_equal Sol::IntegerConstant , @ins.b.class
|
||||
assert_equal 1 , @ins.b.value
|
||||
end
|
||||
def test_to_risc
|
@ -1,13 +1,13 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestMethodExpression < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
ruby_tree = Ruby::RubyCompiler.compile( as_main("a = 5") )
|
||||
@clazz = ruby_tree.to_vool
|
||||
@clazz = ruby_tree.to_sol
|
||||
end
|
||||
def method
|
||||
@clazz.body.first
|
||||
@ -25,7 +25,7 @@ module Vool
|
||||
end
|
||||
def test_creates_instance_method
|
||||
main = @clazz.to_parfait.get_instance_method(:main)
|
||||
assert_equal Parfait::VoolMethod , main.class
|
||||
assert_equal Parfait::SolMethod , main.class
|
||||
assert_equal :main , main.name
|
||||
end
|
||||
def test_creates_type_method
|
||||
@ -36,12 +36,12 @@ module Vool
|
||||
|
||||
end
|
||||
class TestMethodExpressionDoubleDef < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
Parfait.boot!(Parfait.default_test_options)
|
||||
ruby_tree = Ruby::RubyCompiler.compile( as_main("a = 5") + ";" + as_main("a = 5") )
|
||||
@clazz = ruby_tree.to_vool
|
||||
@clazz = ruby_tree.to_sol
|
||||
end
|
||||
def method
|
||||
@clazz.body.first
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestReturnSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "return 5")
|
||||
@ -38,7 +38,7 @@ module Vool
|
||||
end
|
||||
end
|
||||
class TestReturnSendSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "return 5.div4" , "Integer.div4" )
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestSimpleWhileSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "while(@a) ; @a = 5 ; end;return")
|
@ -1,9 +1,9 @@
|
||||
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestWhileConditionSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "while(5.div4) ; 5.div4 ; end;return" , "Integer.div4")
|
@ -1,8 +1,8 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
module Sol
|
||||
class TestYieldArgsSendSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "return yield(1)" )
|
||||
@ -66,7 +66,7 @@ module Vool
|
||||
end
|
||||
end
|
||||
class TestYieldNoArgsSendSlotMachine < MiniTest::Test
|
||||
include VoolCompile
|
||||
include SolCompile
|
||||
|
||||
def setup
|
||||
@compiler = compile_main( "return yield(some.extra.calls)" )
|
@ -4,7 +4,7 @@ module ScopeHelper
|
||||
|
||||
def compiler_with_main(options = {})
|
||||
compiler = RubyX::RubyXCompiler.new(RubyX.default_test_options.merge(options))
|
||||
compiler.ruby_to_vool( "class Space;def main(arg);return;end;end" )
|
||||
compiler.ruby_to_sol( "class Space;def main(arg);return;end;end" )
|
||||
compiler
|
||||
end
|
||||
def in_Test(statements)
|
||||
@ -28,7 +28,7 @@ module ScopeHelper
|
||||
end
|
||||
|
||||
end
|
||||
module VoolCompile
|
||||
module SolCompile
|
||||
include ScopeHelper
|
||||
include SlotMachine
|
||||
include Preloader
|
||||
|
@ -2,11 +2,11 @@ module Preloader
|
||||
def get_preload(preload)
|
||||
return "" unless preload
|
||||
if( preload == "all" )
|
||||
loading = Vool::Builtin.builtin.keys
|
||||
loading = Sol::Builtin.builtin.keys
|
||||
else
|
||||
loading = preload.split(";")
|
||||
end
|
||||
loading.collect { |loads| Vool::Builtin.load_builtin(loads)}.join(";") + ";"
|
||||
loading.collect { |loads| Sol::Builtin.load_builtin(loads)}.join(";") + ";"
|
||||
end
|
||||
def preload
|
||||
get_preload(@preload)
|
||||
|
Reference in New Issue
Block a user