2023-06-12 09:54:30 -06:00
|
|
|
local Runner = require('tests.indent.common').Runner
|
|
|
|
|
local XFAIL = require('tests.indent.common').XFAIL
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
local runner = Runner:new(it, 'tests/indent/t32', {
|
2023-07-30 17:23:30 +02:00
|
|
|
tabstop = 2,
|
|
|
|
|
shiftwidth = 2,
|
|
|
|
|
softtabstop = 0,
|
|
|
|
|
expandtab = true,
|
|
|
|
|
})
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
describe('indent t32:', function()
|
|
|
|
|
describe('whole file:', function()
|
|
|
|
|
runner:whole_file('.')
|
2023-07-30 17:23:30 +02:00
|
|
|
end)
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
describe('new line:', function()
|
|
|
|
|
runner:new_line(
|
|
|
|
|
'if_block.cmm',
|
|
|
|
|
{ on_line = 2, text = 'GOTO start', indent = 0 },
|
|
|
|
|
'command after IF',
|
|
|
|
|
XFAIL
|
|
|
|
|
)
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
runner:new_line(
|
|
|
|
|
'if_block.cmm',
|
|
|
|
|
{ on_line = 5, text = 'GOTO start', indent = 2 },
|
|
|
|
|
'command in IF then block'
|
|
|
|
|
)
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
runner:new_line('if_block.cmm', { on_line = 4, text = '(', indent = 0 }, 'block after IF')
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-07-30 17:23:30 +02:00
|
|
|
{ 1, 2 },
|
|
|
|
|
{ 14, 2 },
|
|
|
|
|
{ 19, 2 },
|
|
|
|
|
{ 21, 2 },
|
|
|
|
|
{ 41, 2 },
|
|
|
|
|
{ 42, 4 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'if_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = '&x=1.', indent = test[2] },
|
|
|
|
|
'command in IF then[' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-09-13 20:54:04 +02:00
|
|
|
-- Insertion of a command right before the existing block results in
|
|
|
|
|
-- incorrect syntax. The parse either detect an error or incorrectly
|
|
|
|
|
-- assumes "ELSE IF" is a command.
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-09-13 20:54:04 +02:00
|
|
|
{ 26, 2 },
|
|
|
|
|
{ 30, 2 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-09-13 20:54:04 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'if_block.cmm',
|
2023-09-13 20:54:04 +02:00
|
|
|
{ on_line = test[1], text = 'PRINT ""', indent = test[2] },
|
2023-06-12 09:54:30 -06:00
|
|
|
'displace block in IF then[' .. ii .. ']',
|
2023-09-13 20:54:04 +02:00
|
|
|
XFAIL
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
runner:new_line(
|
|
|
|
|
'if_block.cmm',
|
|
|
|
|
{ on_line = 45, text = '&x=1.', indent = 6 },
|
|
|
|
|
'command in IF then',
|
|
|
|
|
XFAIL
|
|
|
|
|
)
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-07-30 17:23:30 +02:00
|
|
|
{ 16, 2 },
|
|
|
|
|
{ 21, 2 },
|
|
|
|
|
{ 23, 2 },
|
|
|
|
|
{ 44, 4 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'if_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = 'CONTinue\n', indent = test[2] },
|
|
|
|
|
'command in IF else[' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
runner:new_line(
|
|
|
|
|
'while_block.cmm',
|
|
|
|
|
{ on_line = 2, text = '&x=1.', indent = 2 },
|
|
|
|
|
'command after WHILE'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
runner:new_line(
|
|
|
|
|
'while_block.cmm',
|
|
|
|
|
{ on_line = 4, text = '&x=1.', indent = 0 },
|
|
|
|
|
'command after WHILE'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
runner:new_line(
|
|
|
|
|
'while_block.cmm',
|
|
|
|
|
{ on_line = 1, text = '(\n', indent = 0 },
|
|
|
|
|
'block in WHILE then'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for ii, test in ipairs({
|
2023-07-30 17:23:30 +02:00
|
|
|
{ 5, 2 },
|
|
|
|
|
{ 12, 2 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'while_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = '&x=1.', indent = test[2] },
|
|
|
|
|
'command in WHILE then block[' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-09-13 20:54:04 +02:00
|
|
|
{ 1, 0 },
|
|
|
|
|
{ 4, 2 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'repeat_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = '&x=1.', indent = test[2] },
|
|
|
|
|
'command after RePeaT[' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
runner:new_line(
|
|
|
|
|
'repeat_block.cmm',
|
|
|
|
|
{ on_line = 3, text = '(\n', indent = 0 },
|
|
|
|
|
'block in RePeaT then'
|
|
|
|
|
)
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-09-13 20:54:04 +02:00
|
|
|
{ 7, 2 },
|
|
|
|
|
{ 18, 2 },
|
|
|
|
|
{ 24, 2 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'repeat_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = '&x=1.', indent = test[2] },
|
|
|
|
|
'command in RePeaT then block [' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
runner:new_line(
|
|
|
|
|
'subroutine_block.cmm',
|
|
|
|
|
{ on_line = 1, text = '(\n', indent = 0 },
|
|
|
|
|
'block after call label'
|
|
|
|
|
)
|
2023-07-30 17:23:30 +02:00
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-09-13 20:54:04 +02:00
|
|
|
{ 2, 2 },
|
|
|
|
|
{ 3, 2 },
|
|
|
|
|
{ 8, 2 },
|
|
|
|
|
{ 12, 2 },
|
|
|
|
|
{ 19, 2 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'subroutine_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = '&x=1.', indent = test[2] },
|
|
|
|
|
'command in subroutine block[' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
for ii, test in ipairs({
|
2023-07-30 17:23:30 +02:00
|
|
|
{ 5, 2 },
|
|
|
|
|
{ 13, 2 },
|
|
|
|
|
{ 23, 2 },
|
2023-06-12 09:54:30 -06:00
|
|
|
}) do
|
2023-07-30 17:23:30 +02:00
|
|
|
runner:new_line(
|
2023-06-12 09:54:30 -06:00
|
|
|
'subroutine_block.cmm',
|
|
|
|
|
{ on_line = test[1], text = '&x=1.', indent = test[2] },
|
|
|
|
|
'command after subroutine block[' .. ii .. ']'
|
2023-07-30 17:23:30 +02:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end)
|