Add tests for all implemented nodes, leave ones that need fixing commented out

This commit is contained in:
Jemma Issroff 2023-10-18 18:14:45 -03:00
parent 40624d4921
commit 1c48d15d6b

View File

@ -3,10 +3,6 @@
# This file is organized to match itemization in https://github.com/ruby/prism/issues/1335 # This file is organized to match itemization in https://github.com/ruby/prism/issues/1335
module Prism module Prism
class TestCompilePrism < Test::Unit::TestCase class TestCompilePrism < Test::Unit::TestCase
def test_empty_program
test_prism_eval("")
end
############################################################################ ############################################################################
# Literals # # Literals #
############################################################################ ############################################################################
@ -59,8 +55,8 @@ module Prism
test_prism_eval("__FILE__") test_prism_eval("__FILE__")
end end
# TODO
def test_SourceLineNode def test_SourceLineNode
# TODO:
# test_prism_eval("__LINE__") # test_prism_eval("__LINE__")
end end
@ -89,7 +85,8 @@ module Prism
end end
def test_DefinedNode def test_DefinedNode
# TODO # TODO:
# test_prism_eval("defined? foo")
end end
def test_GlobalVariableReadNode def test_GlobalVariableReadNode
@ -105,7 +102,8 @@ module Prism
end end
def test_NumberedReferenceReadNode def test_NumberedReferenceReadNode
# TODO test_prism_eval("$1")
test_prism_eval("$99999")
end end
############################################################################ ############################################################################
@ -130,15 +128,15 @@ module Prism
end end
def test_ConstantAndWriteNode def test_ConstantAndWriteNode
# TODO test_prism_eval("Constant = 1; Constant &&= 1")
end end
def test_ConstantOperatorWriteNode def test_ConstantOperatorWriteNode
# TODO test_prism_eval("Constant = 1; Constant += 1")
end end
def test_ConstantOrWriteNode def test_ConstantOrWriteNode
# TODO test_prism_eval("Constant = 1; Constant ||= 1")
end end
def test_ConstantWriteNode def test_ConstantWriteNode
@ -267,7 +265,7 @@ module Prism
end end
def test_MultiWriteNode def test_MultiWriteNode
# TODO test_prism_eval("foo, bar = [1,2]")
end end
############################################################################ ############################################################################
@ -275,7 +273,7 @@ module Prism
############################################################################ ############################################################################
def test_EmbeddedStatementsNode def test_EmbeddedStatementsNode
# TODO test_prism_eval('"foo #{to_s} baz"')
end end
def test_EmbeddedVariableNode def test_EmbeddedVariableNode
@ -365,11 +363,12 @@ module Prism
end end
def test_AssocNode def test_AssocNode
# TODO test_prism_eval("{ foo: :bar }")
end end
def test_AssocSplatNode def test_AssocSplatNode
# TODO # TODO:
# test_prism_eval("foo = { a: 1 }; { **foo }")
end end
def test_HashNode def test_HashNode
@ -384,11 +383,16 @@ module Prism
end end
def test_ImplicitNode def test_ImplicitNode
# TODO test_prism_eval("{ to_s: }")
end end
def test_RangeNode def test_RangeNode
# TODO test_prism_eval("1..2")
test_prism_eval("1...2")
test_prism_eval("..2")
test_prism_eval("...2")
test_prism_eval("1..")
test_prism_eval("1...")
end end
def test_SplatNode def test_SplatNode
@ -427,15 +431,19 @@ module Prism
end end
def test_UnlessNode def test_UnlessNode
# TODO # TODO:
# test_prism_eval("1 unless true")
# test_prism_eval("1 unless false")
# test_prism_eval("unless true; 1; end")
# test_prism_eval("unless false; 1; end")
end end
def test_UntilNode def test_UntilNode
# TODO test_prism_eval("a = 0; until a == 1; a = a + 1; end")
end end
def test_WhileNode def test_WhileNode
# TODO test_prism_eval("a = 0; while a != 1; a = a + 1; end")
end end
############################################################################ ############################################################################
@ -443,23 +451,36 @@ module Prism
############################################################################ ############################################################################
def test_BeginNode def test_BeginNode
# TODO test_prism_eval("begin; 1; end")
end end
def test_BreakNode def test_BreakNode
# TODO test_prism_eval("while true; break; end")
test_prism_eval("while true; break 1; end")
end end
def test_NextNode def test_NextNode
# TODO # TODO:
# test_prism_eval("2.times do |i|; next if i == 1; end")
end end
def test_RedoNode def test_RedoNode
# TODO # TODO:
# test_prism_eval(<<-CODE
# counter = 0
# 5.times do |i|
# counter += 1
# if i == 2 && counter < 3
# redo
# end
# end
# CODE
# )
end end
def test_ReturnNode def test_ReturnNode
# TODO test_prism_eval("def return_node; return 1; end")
end end
############################################################################ ############################################################################
@ -485,7 +506,7 @@ module Prism
end end
def test_LambdaNode def test_LambdaNode
# TODO test_prism_eval("-> { to_s }.call")
end end
def test_ModuleNode def test_ModuleNode
@ -500,19 +521,21 @@ module Prism
end end
def test_ProgramNode def test_ProgramNode
# TODO test_prism_eval("")
test_prism_eval("1")
end end
def test_SingletonClassNode def test_SingletonClassNode
# TODO # TODO:
# test_prism_eval("class << self; end")
end end
def test_StatementsNode def test_StatementsNode
# TODO test_prism_eval("1")
end end
def test_YieldNode def test_YieldNode
# TODO test_prism_eval("def prism_test_yield_node; yield; end")
end end
############################################################################ ############################################################################
@ -520,7 +543,7 @@ module Prism
############################################################################ ############################################################################
def test_ArgumentsNode def test_ArgumentsNode
# TODO test_prism_eval("[].push 1")
end end
def test_BlockArgumentNode def test_BlockArgumentNode
@ -528,11 +551,11 @@ module Prism
end end
def test_CallNode def test_CallNode
# TODO test_prism_eval("to_s")
end end
def test_KeywordHashNode def test_KeywordHashNode
# TODO test_prism_eval("[a: [:b, :c]]")
end end
############################################################################ ############################################################################
@ -548,7 +571,7 @@ module Prism
end end
def test_OptionalParameterNode def test_OptionalParameterNode
# TODO test_prism_eval("def prism_test_optional_param_node(bar = nil); end")
end end
def test_UndefNode def test_UndefNode