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:
2019-10-04 00:36:49 +03:00
parent aa9fc8bc81
commit d1f8733623
135 changed files with 636 additions and 636 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,7 +1,7 @@
require_relative "helper"
module Vool
module Sol
class TestBlockArg < MiniTest::Test
include SlotMachineCompile

View File

@ -1,7 +1,7 @@
require_relative "helper"
module Vool
module Sol
class TestClassStatementSlotMachine < MiniTest::Test
include SlotMachineCompile

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,8 +1,8 @@
require_relative "helper"
module Vool
module Sol
class TestSendClassSlotMachine < MiniTest::Test
include VoolCompile
include SolCompile
def class_main
<<-eos

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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")

View File

@ -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

View File

@ -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")

View File

@ -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")

View File

@ -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 ")

View File

@ -1,6 +1,6 @@
require_relative "helper"
module Vool
module Sol
class TestSendSelfSlotMachine < MiniTest::Test
include SimpleSendHarness

View File

@ -1,6 +1,6 @@
require_relative "helper"
module Vool
module Sol
class TestSendSimpleSlotMachine < MiniTest::Test
include SimpleSendHarness

View File

@ -1,6 +1,6 @@
require_relative "helper"
module Vool
module Sol
class TestSendSimpleArgsSlotMachine < MiniTest::Test
include SimpleSendHarness

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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

View File

@ -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")

View File

@ -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")

View File

@ -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")

View File

@ -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")

View File

@ -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")

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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" )

View File

@ -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")

View File

@ -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")

View File

@ -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)" )

View File

@ -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

View File

@ -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)