create and test derived classes too

This commit is contained in:
Torsten Ruger 2016-12-18 17:17:58 +02:00
parent 170d453a36
commit af9987659f
2 changed files with 21 additions and 12 deletions

View File

@ -9,10 +9,14 @@ module Melon
compiler.process ast
end
def get_name( statement )
return nil unless statement
statement.children[1]
end
def on_class statement
name , _ , _ = *statement
clazz_name = name.children[1]
Parfait::Space.object_space.create_class(clazz_name , nil )
name , sup , _ = *statement
Parfait::Space.object_space.create_class(get_name(name) , get_name(sup) )
end
end
end

View File

@ -3,15 +3,20 @@ require_relative "helper"
module Melon
class TestClass < MiniTest::Test
def test_creates_class
Register.machine.boot
before = Parfait::Space.object_space.classes.length
@string_input = <<HERE
class Testing
end
HERE
Compiler.compile @string_input
assert_equal 1 , Parfait::Space.object_space.classes.length - before , "No classes created"
def setup
Register.machine.boot unless Register.machine.booted
end
def test_creates_class_without_deriviation
Compiler.compile "class Testing ; end"
assert t = Parfait::Space.object_space.get_class_by_name(:Testing) , "No classes created"
assert_equal :Object , t.super_class_name
end
def test_creates_class_with_deriviation
Compiler.compile "class Test2 < List ;end"
assert t = Parfait::Space.object_space.get_class_by_name(:Test2) , "No classes created"
assert_equal :List , t.super_class_name
end
end
end