rubyx/test/rubyx/rt_parfait/test_object.rb

81 lines
2.4 KiB
Ruby

require_relative "rt_helper"
module RubyX
class ObjectSourceTest < MiniTest::Test
include ParfaitHelper
def setup
@input = load_parfait(:object) + load_parfait_test(:object)
end
def test_load
assert @input.include? "ParfaitTest"
assert @input.include? "class Object"
end
def test_compile
compiled = Ruby::RubyCompiler.compile(@input)
assert_equal Ruby::ScopeStatement , compiled.class
assert_equal Ruby::ClassStatement , compiled.first.class
end
def test_require
compiled = Ruby::RubyCompiler.compile(@input)
assert_equal Ruby::SendStatement , compiled[1].class
assert_equal :require_relative , compiled[1].name
end
def test_test_class
compiled = Ruby::RubyCompiler.compile(@input)
assert_equal Ruby::ClassStatement , compiled[2].class
assert_equal :TestObject , compiled[2].name
end
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_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_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_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
class TestObjectRtTest < Minitest::Test
self.class.include ParfaitHelper
include Risc::Ticker
def self.runnable_methods
input = load_parfait(:object) + load_parfait_test(:object)
sol = Ruby::RubyCompiler.compile(input).to_sol
tests = [ ]
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 = #{sol[2].name}.new
test.setup
test.#{method.name}
end
end
MAIN
# ticks = run_input(code)
# assert_equal "" , @interpreter.stdout
end
break
end
tests
end
end
end