eaxhla/test/CMDTEST_eaxhla.rb
2024-07-08 19:34:19 +02:00

146 lines
2.5 KiB
Ruby

$default_output_file = "test_me_please"
class CMDTEST_error_batch < Cmdtest::Testcase
def test_unknown_instruction
create_file "input.eax", <<-HEREDOC
procedure a
nop
end procedure
unix
program main
wigglecall a
end program
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+/
exit_status 1
end
end
def test_unclosed_comment
create_file "input.eax", <<-HEREDOC
/*
reeeeeeee
reeeeeeeee
reeeeee
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+/
exit_status 1
end
end
def test_unclosed_artimetric
create_file "input.eax", <<-HEREDOC
program a
u8 var = [
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+/
exit_status 1
end
end
def test_unclosed_program
create_file "input.eax", <<-HEREDOC
unix
program main
begin
exit 1
end rpogram
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+/
exit_status 1
end
end
def test_double_declare
create_file "input.eax", <<-HEREDOC
program main
u8 a
u8 a
begin
end program
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+/
exit_status 1
end
end
def test_double_program
create_file "input.eax", <<-HEREDOC
program a
begin
end program
program b
begin
end program
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+/
exit_status 1
end
end
def test_multi_error
create_file "input.eax", <<-HEREDOC
program main
k8 kek
begin
wigglecall func
xor $rsp rsp
xor rsp rsp
poke rsp
xor rsp rsp
xor rsp rsp
xor rsp rsp
end program
HEREDOC
cmd "eaxhla input.eax" do
stderr_equal /.+\n(.|\n)+/m
exit_status 1
end
end
end
class CMDTEST_warning_batch < Cmdtest::Testcase
def test_overflows
create_file "input.eax", <<-HEREDOC
program main
u8 a = 10
u8 b = 10000
u8 c = -200
begin
end program
HEREDOC
ignore_file $default_output_file
cmd "eaxhla input.eax" do
stderr_equal /.+/
end
end
def test_empty
create_file "input.eax", <<-HEREDOC
HEREDOC
ignore_file $default_output_file
cmd "eaxhla input.eax" do
stderr_equal /.+/
end
end
end