tests for ast to code converter

This commit is contained in:
Torsten Ruger
2016-12-10 03:43:44 +02:00
parent 29fb2a50f5
commit 5c2f545f8e
4 changed files with 63 additions and 9 deletions

View File

@ -4,6 +4,4 @@ require_relative "lib/test_all"
require_relative "register/test_all"
require_relative "typed/parfait/test_all"
require_relative "typed/type/test_all"
require_relative "typed/test_all"

5
test/typed/test_all.rb Normal file
View File

@ -0,0 +1,5 @@
require_relative "parfait/test_all"
require_relative "type/test_all"
require_relative "test_to_code"

View File

@ -0,0 +1,51 @@
require_relative "helper"
class ToCodeTest < MiniTest::Test
include AST::Sexp
def check clazz
tree = Typed.ast_to_code @statement
assert_equal tree.class , Typed::Tree.const_get( clazz )
end
def test_field_access
@statement = s(:field_access, s(:receiver, s(:name, :m)), s(:field, s(:name, :index)))
check "FieldAccess"
end
def test_field_def_value
@statement = s(:field_def, :Integer, s(:name, :abba), s(:int, 5))
check "FieldDef"
end
def test_class_field
@statement = s(:class_field, :Integer, :fff, s(:int, 3))
check "ClassField"
end
def test_simple_while
@statement = s(:while_statement, :false, s(:conditional,s(:int, 1)), s(:statements))
check "WhileStatement"
end
def test_assignment
@statement = s(:assignment, s(:name, :i), s(:int, 0))
check "Assignment"
end
def test_nil
@statement = s(:nil)
check "NilExpression"
end
def test_true
@statement = s(:true)
check "TrueExpression"
end
def test_false
@statement = s(:false)
check "FalseExpression"
end
def test_name
@statement = s(:name, :foo)
check "NameExpression"
end
def test_class_name
@statement = s(:class_name, :FooBar)
check "ClassExpression"
end
end