compiler test back up

This commit is contained in:
Torsten Ruger
2015-09-20 17:33:05 +03:00
parent 5f628744d6
commit b1cab4f395
9 changed files with 88 additions and 73 deletions

View File

@ -6,65 +6,73 @@ class TestStringClass < MiniTest::Test
def test_string_class
@string_input = <<HERE
class Object
def raise()
putstring()
exit()
int raise()
self.putstring()
self.exit()
end
def method_missing(name,args)
int method_missing(ref name,ref args)
name.raise()
end
def class()
l = @layout
return l.class()
ref class()
ref l = self.layout
l = l.object_class()
return l
end
def resolve_method(name)
clazz = class()
function = clazz._get_instance_variable(name)
index = clazz.index_of(name)
if( function == 0 )
ref resolve_method(ref name)
ref clazz = self.class()
ref function = clazz._get_instance_variable(name)
int index = clazz.index_of(name)
if( function == nil )
name.raise()
else
return function
end
end
def index_of( name )
l = @layout
int index_of( ref name )
ref l = self.layout
return l.index_of(name)
end
def old_layout()
return @layout
ref old_layout()
return self.layout
end
end
class Class
def Class.new_object( length )
int Class.new_object( int length )
return 4
end
end
class String
def String.new_string( len )
return Class.new_object( len << 2 )
ref self.new_string(int len )
len = len << 2
return super.new_object( len)
end
def length()
return @length
int length()
return self.length
end
def plus(str)
my_length = @length
int plus(ref str)
my_length = self.length
str_len = str.length()
new_string = String.new_string(my_length + str_len)
my_length = str_len + my_length
new_string = self.new_string(my_length )
i = 0
while( i < my_length) do
while( i < my_length)
char = get(i)
new_string.set(i , char)
i = i + 1
end
i = 0
while( i < str_len) do
while( i < str_len)
char = str.get(i)
new_string.set( i + my_length , char)
len = i + my_length
new_string.set( len , char)
i = i + 1
end
return new_string
end
end
HERE
@expect = [Virtual::Return ]