After:
  unlet! b:parse_result

  if exists(':ParseTest')
    delcommand ParseTest
  endif

Execute(ale#args#Parse should work for an example command):
  command! -nargs=* ParseTest let b:parse_result = ale#args#Parse(['foo', 'bar'], <q-args>)

  ParseTest
  AssertEqual [{}, ''], b:parse_result

  ParseTest --
  AssertEqual [{}, ''], b:parse_result

  ParseTest -foo
  AssertEqual [{'foo': ''}, ''], b:parse_result

  ParseTest -foo -- --
  AssertEqual [{'foo': ''}, '--'], b:parse_result

  ParseTest -foo -bar
  AssertEqual [{'foo': '', 'bar': ''}, ''], b:parse_result

  ParseTest -foo -bar leave  these  alone
  AssertEqual [{'foo': '', 'bar': ''}, 'leave  these  alone'], b:parse_result

Execute(ale#args#Parse should raise errors for unknown arguments):
  AssertThrows call ale#args#Parse(['foo', 'bar'], '-nope   leave  these  alone')
  AssertEqual 'Invalid argument: -nope', g:vader_exception
