local lu = require('luaunit')
local argparse = require('argparse')
TestParser = {}
function TestParser:setupClass() end
function TestParser:teardownClass() end
function TestParser:test_cli_parse_params()
local argument_parser = argparse.ArgumentParser('test argument parser')
argument_parser:add_argument('-s', { default = { '1' }, nargs = '+', help = 'system_id', required = true })
argument_parser:add_argument('-l', { default = { '2' }, nargs = '+', help = 'board_id', required = true })
argument_parser:add_argument('-v', { default = { '3' }, nargs = '+', help = 'extra_param', required = true })
local test_cli_params = { '-s', '2', '-l', 'blade1', '-v', 'clear' }
local params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '2' }, ['-l'] = { 'blade1' }, ['-v'] = { 'clear' } })
lu.assertEquals(value_err, false)
test_cli_params = { '-x', 'cccc' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '1' }, ['-l'] = { '2' }, ['-v'] = { '3' } })
lu.assertEquals(value_err, true)
end
function TestParser:test_cli_parse_params_nargs()
local argument_parser = argparse.ArgumentParser('test argument parser')
argument_parser:add_argument('-s', { default = { '1' }, nargs = '?', help = 'system_id', required = true })
argument_parser:add_argument('-l', { default = { '1' }, nargs = '?', help = 'board_id', required = true })
argument_parser:add_argument('-v', { default = { '1' }, nargs = '*', help = 'extra_param', required = true })
local test_cli_params = { '-s', '11', '-l', 'aaa', '-v', '0', '1' }
local params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '11' }, ['-l'] = { 'aaa' }, ['-v'] = { '0', '1' } })
lu.assertEquals(value_err, false)
test_cli_params = { '-s', '12', '-l', 'bs', '-v', 'enabled', '-xxxx' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '12' }, ['-l'] = { 'bs' }, ['-v'] = { 'enabled', '-xxxx' } })
lu.assertEquals(value_err, false)
test_cli_params = { '-s', '-l', '-v' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '1' }, ['-l'] = { '1' }, ['-v'] = { '1' } })
lu.assertEquals(value_err, false)
test_cli_params = { '-s', '1', '3', '7', '-l', '-v' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '1', '3', '7' } })
lu.assertEquals(value_err, true)
test_cli_params = { '-s', '-l', '1', '3', '7', '-v' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '1' }, ['-l'] = { '1', '3', '7' } })
lu.assertEquals(value_err, true)
end
function TestParser:test_cli_parse_params_required()
local argument_parser = argparse.ArgumentParser('test argument parser')
argument_parser:add_argument('-a', { nargs = '+', help = 'testaaa', required = true })
argument_parser:add_argument('-t', { default = { 'sensor' }, nargs = '+', help = 'testttt', required = true })
local test_cli_params = { '-a', 'testing' }
local params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-a'] = { 'testing' }, ['-t'] = { 'sensor' } })
lu.assertEquals(value_err, false)
test_cli_params = { '-t', 'cccc' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-a'] = {} })
lu.assertEquals(value_err, true)
end
function TestParser:test_cli_parse_timezone()
local argument_parser = argparse.ArgumentParser('test argument parser')
argument_parser:add_argument('-s', { nargs = '?', help = 'system_id' })
argument_parser:add_argument('-v', { nargs = '*', help = 'extra_param' })
local test_cli_params = { '-v', '-11:00' }
local params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = {}, ['-v'] = { '-11:00' } })
lu.assertEquals(value_err, false)
local test_cli_params = { '-v', 'UTC-4:30' }
local params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = {}, ['-v'] = { 'UTC-4:30' } })
lu.assertEquals(value_err, false)
test_cli_params = { '-s', '24', '-v', '+8:00' }
params_tuple, value_err = argument_parser:parse_args(test_cli_params)
lu.assertEquals(params_tuple, { ['-s'] = { '24' }, ['-v'] = { '+8:00' } })
lu.assertEquals(value_err, false)
end