rubyx/test/parfait_ruby/test_class.rb
Torsten Ruger 40d81681b5 move parfait adapter into parfait ruby
in the future parfait will be coded in some and translated back into
ruby to “adapt”
until then, all ruby code is the adapter
2015-11-18 11:55:29 +02:00

63 lines
1.9 KiB
Ruby

require_relative "../helper"
class TestClass < MiniTest::Test
def setup
@space = Register.machine.boot.space
@try = @space.create_class :Try , :Object
end
def foo_method for_class = :Try
args = Parfait.new_list [ Parfait::Variable.new(:Integer , :bar )]
::Parfait::Method.new @space.get_class_by_name(for_class) , :foo , args
end
def test_layout_forclass
assert_equal "Class(Space)" , @space.get_layout.object_class.inspect
assert_equal :Space , @space.get_layout.object_class.name
end
def test_new_superclass_name
assert_equal :Object , @try.super_class_name
end
def test_new_superclass
assert_equal "Class(Object)" , @try.super_class.inspect
end
def test_new_methods
assert_equal @try.method_names.class, @try.instance_methods.class
assert_equal @try.method_names.get_length , @try.instance_methods.get_length
end
def test_add_method
foo = foo_method
assert_equal foo , @try.add_instance_method(foo)
assert_equal 1 , @try.instance_methods.get_length
assert_equal ":foo" , @try.method_names.inspect
end
def test_remove_method
test_add_method
assert_equal true , @try.remove_instance_method(:foo)
end
def test_remove_nothere
assert_raises RuntimeError do
@try.remove_instance_method(:foo)
end
end
def test_create_method
@try.create_instance_method :bar, Parfait.new_list( [ Parfait::Variable.new(:Integer , :bar )])
assert_equal ":bar" , @try.method_names.inspect
end
def test_method_get
test_add_method
assert_equal Parfait::Method , @try.get_instance_method(:foo).class
end
def test_method_get_nothere
assert_equal nil , @try.get_instance_method(:foo)
test_remove_method
assert_equal nil , @try.get_instance_method(:foo)
end
def test_resolve
foo = foo_method :Object
@space.get_class_by_name(:Object).add_instance_method(foo)
assert_equal :foo , @try.resolve_method(:foo).name
end
end