Torsten Rüger
b2260d856d
After having over 600 failing tests at one point, this does feel good. Even better, most of the risc/interpreter tests where i didn't change anything came gree without changing the tests. ie we have binary compatibility.
74 lines
2.0 KiB
Ruby
74 lines
2.0 KiB
Ruby
require_relative "../helper"
|
|
|
|
module Risc
|
|
class TestCollector < MiniTest::Test
|
|
|
|
def setup
|
|
Parfait.boot!(Parfait.default_test_options)
|
|
Risc.boot!
|
|
@linker = Mom::MomCollection.new.to_risc.translate(:arm)
|
|
end
|
|
|
|
def test_simple_collect
|
|
objects = Collector.collect_space(@linker)
|
|
assert_equal 621 , objects.length , objects.length.to_s
|
|
end
|
|
|
|
def test_collect_all_types
|
|
Collector.collect_space(@linker).each do |objekt , position|
|
|
next unless objekt.is_a?( Parfait::Type )
|
|
assert Parfait.object_space.get_type_for( objekt.hash ) , objekt.hash
|
|
end
|
|
end
|
|
|
|
def test_allowed_types
|
|
Collector.collect_space(@linker).each do |objekt , position|
|
|
next if objekt.is_a?( Parfait::Object )
|
|
next if objekt.is_a?( Symbol )
|
|
assert false
|
|
end
|
|
end
|
|
def test_positions
|
|
Collector.collect_space(@linker).each do |objekt , position|
|
|
assert_equal Position , position.class
|
|
assert !position.valid?
|
|
end
|
|
end
|
|
def test_integer_positions
|
|
objects = Collector.collect_space(@linker)
|
|
int = Parfait.object_space.get_next_for(:Integer)
|
|
while(int)
|
|
assert Position.set?(int) , "INt #{int.object_id}"
|
|
int = int.next_integer
|
|
end
|
|
end
|
|
end
|
|
class TestBigCollector < MiniTest::Test
|
|
|
|
def setup
|
|
opt = Parfait.default_test_options
|
|
opt[:factory] = 400
|
|
Parfait.boot!(opt)
|
|
Risc.boot!
|
|
@linker = Mom::MomCollection.new.to_risc.translate(:arm)
|
|
end
|
|
|
|
def test_simple_collect
|
|
objects = Collector.collect_space(@linker)
|
|
assert_equal 2421, objects.length , objects.length.to_s
|
|
end
|
|
|
|
def test_integer_positions
|
|
objects = Collector.collect_space(@linker)
|
|
int = Parfait.object_space.get_next_for(:Integer)
|
|
count = 0
|
|
while(int)
|
|
count += 1
|
|
assert Position.set?(int) , "INT #{int.object_id} , count #{count}"
|
|
int = int.next_integer
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|