203 lines
7.1 KiB
Lua
203 lines
7.1 KiB
Lua
|
local b = require('plugins.blueprint')
|
||
|
|
||
|
-- also covers code shared between parse_gui_commandline and parse_commandline
|
||
|
function test.parse_gui_commandline()
|
||
|
local opts = {}
|
||
|
b.parse_gui_commandline(opts, {})
|
||
|
expect.table_eq({auto_phase=true, name='blueprint'}, opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'help'})
|
||
|
expect.table_eq({help=true}, opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'--help'})
|
||
|
expect.table_eq({help=true}, opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'-h'})
|
||
|
expect.table_eq({help=true}, opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'--cursor=1,2,3'})
|
||
|
expect.table_eq({auto_phase=true, name='blueprint', start={x=1,y=2,z=3}},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid argument',
|
||
|
function() b.parse_gui_commandline(
|
||
|
opts, {'--cursor=-1,2,3'}) end,
|
||
|
'negative coordinate')
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid argument',
|
||
|
function() b.parse_gui_commandline(
|
||
|
opts, {'--cursor=1,b,3'}) end,
|
||
|
'non-numeric coordinate')
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'imaname'})
|
||
|
expect.table_eq({auto_phase=true, name='imaname'}, opts)
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid basename',
|
||
|
function() b.parse_gui_commandline(opts, {''}) end)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'imaname', 'dig', 'query'})
|
||
|
expect.table_eq({auto_phase=false, name='imaname', dig=true, query=true},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_gui_commandline(opts, {'imaname', 'garbagephase'})
|
||
|
expect.table_eq({auto_phase=true, name='imaname'}, opts)
|
||
|
end
|
||
|
|
||
|
function test.parse_commandline()
|
||
|
local opts = {}
|
||
|
b.parse_commandline(opts, '1', '2')
|
||
|
expect.table_eq({auto_phase=true,name='blueprint',width=1,height=2,depth=1},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_commandline(opts, '1', '2', '3')
|
||
|
expect.table_eq({auto_phase=true,name='blueprint',width=1,height=2,depth=3},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_commandline(opts, '1', '2', '-3')
|
||
|
expect.table_eq({auto_phase=true,name='blueprint',width=1,height=2,depth=-3},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_commandline(opts, '1', '2', 'imaname')
|
||
|
expect.table_eq({auto_phase=true,name='imaname',width=1,height=2,depth=1},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_commandline(opts, '1', '2', '10imaname')
|
||
|
expect.table_eq({auto_phase=true,name='10imaname',width=1,height=2,depth=1},
|
||
|
opts, 'invalid depth is considered a basename')
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_commandline(opts, '1', '2', '-10imaname')
|
||
|
expect.table_eq({auto_phase=true,name='-10imaname',width=1,height=2,depth=1},
|
||
|
opts, 'invalid negative depth is considered a basename')
|
||
|
|
||
|
opts = {}
|
||
|
b.parse_commandline(opts, '1', '2', '3', 'imaname')
|
||
|
expect.table_eq({auto_phase=true,name='imaname',width=1,height=2,depth=3},
|
||
|
opts)
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid width or height',
|
||
|
function() b.parse_commandline(opts) end,
|
||
|
'missing width')
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid width or height',
|
||
|
function() b.parse_commandline(opts, '10') end,
|
||
|
'missing height')
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid width or height',
|
||
|
function() b.parse_commandline(opts, '0') end,
|
||
|
'zero height')
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid width or height',
|
||
|
function() b.parse_commandline(opts, 'hi') end,
|
||
|
'invalid width')
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid width or height',
|
||
|
function() b.parse_commandline(opts, '10', 'hi') end,
|
||
|
'invalid height')
|
||
|
|
||
|
opts = {}
|
||
|
expect.error_match('invalid depth',
|
||
|
function() b.parse_commandline(opts, '1', '2', '0') end,
|
||
|
'zero depth')
|
||
|
end
|
||
|
|
||
|
function test.do_gui_no_arg()
|
||
|
local mock_print, mock_timeout, mock_run_script =
|
||
|
mock.func(), mock.func(), mock.func()
|
||
|
mock.patch(
|
||
|
{
|
||
|
{b, 'print', mock_print},
|
||
|
{dfhack, 'timeout', mock_timeout},
|
||
|
{dfhack, 'run_script', mock_run_script},
|
||
|
},
|
||
|
function()
|
||
|
b.do_gui('gui')
|
||
|
expect.eq(1, mock_print.call_count)
|
||
|
expect.eq(1, mock_timeout.call_count)
|
||
|
mock_timeout.call_args[1][3]()
|
||
|
expect.eq(1, mock_run_script.call_count)
|
||
|
expect.table_eq({'gui/blueprint'}, mock_run_script.call_args[1])
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function test.do_gui_with_args()
|
||
|
local mock_print, mock_timeout, mock_run_script =
|
||
|
mock.func(), mock.func(), mock.func()
|
||
|
mock.patch(
|
||
|
{
|
||
|
{b, 'print', mock_print},
|
||
|
{dfhack, 'timeout', mock_timeout},
|
||
|
{dfhack, 'run_script', mock_run_script},
|
||
|
},
|
||
|
function()
|
||
|
b.do_gui('gui', 'arg1', 'arg2', 'arg3')
|
||
|
expect.eq(1, mock_print.call_count)
|
||
|
expect.eq(1, mock_timeout.call_count)
|
||
|
mock_timeout.call_args[1][3]()
|
||
|
expect.eq(1, mock_run_script.call_count)
|
||
|
expect.table_eq({'gui/blueprint', 'arg1', 'arg2', 'arg3'},
|
||
|
mock_run_script.call_args[1])
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function test.do_blueprint_positive_dims()
|
||
|
local mock_run_command = mock.func()
|
||
|
mock.patch(dfhack, 'run_command', mock_run_command,
|
||
|
function()
|
||
|
local spos = {x=10, y=20, z=30}
|
||
|
local epos = {x=11, y=21, z=31}
|
||
|
b.query(spos, epos, 'imaname')
|
||
|
expect.eq(1, mock_run_command.call_count)
|
||
|
expect.table_eq({'blueprint', '2', '2', '2', 'imaname', 'query',
|
||
|
'--cursor=10,20,30'},
|
||
|
mock_run_command.call_args[1])
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function test.do_blueprint_negative_dims()
|
||
|
local mock_run_command = mock.func()
|
||
|
mock.patch(dfhack, 'run_command', mock_run_command,
|
||
|
function()
|
||
|
local spos = {x=11, y=21, z=31}
|
||
|
local epos = {x=10, y=20, z=30}
|
||
|
b.query(spos, epos, 'imaname')
|
||
|
expect.eq(1, mock_run_command.call_count)
|
||
|
expect.table_eq({'blueprint', '2', '2', '-2', 'imaname', 'query',
|
||
|
'--cursor=10,20,31'},
|
||
|
mock_run_command.call_args[1])
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function test.do_blueprint_ensure_cursor_is_at_upper_left()
|
||
|
local mock_run_command = mock.func()
|
||
|
mock.patch(dfhack, 'run_command', mock_run_command,
|
||
|
function()
|
||
|
local spos = {x=11, y=20, z=30}
|
||
|
local epos = {x=10, y=21, z=31}
|
||
|
b.query(spos, epos, 'imaname')
|
||
|
expect.eq(1, mock_run_command.call_count)
|
||
|
expect.table_eq({'blueprint', '2', '2', '2', 'imaname', 'query',
|
||
|
'--cursor=10,20,30'},
|
||
|
mock_run_command.call_args[1])
|
||
|
end)
|
||
|
end
|