146 lines
2.5 KiB
Ruby
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
|