# Start by testing a bunch of error conditions.

echo '# no args is an error' >&2
fish_opt
and echo unexpected status $status

echo '# no short flag or an invalid short flag is an error' >&2
fish_opt -l help
and echo unexpected status $status
fish_opt -s help
and echo unexpected status $status

echo '# a required and optional arg makes no sense' >&2
fish_opt -s h -l help -r --optional-val
and echo unexpected status $status

echo '# a repeated and optional arg makes no sense' >&2
fish_opt -s h -l help --multiple-vals --optional-val
and echo unexpected status $status

echo '# an unexpected arg not associated with a flag is an error' >&2
fish_opt -s h -l help hello
and echo unexpected status $status

# Now verify that valid combinations of options produces the correct output.

echo '# bool, short only'
fish_opt -s h
or echo unexpected status $status

echo '# bool, short and long'
fish_opt --short h --long help
or echo unexpected status $status

echo '# bool, short and long but the short var cannot be used'
fish_opt --short h --long help --long-only

echo '# required val, short and long but the short var cannot be used'
fish_opt --short h --long help -r --long-only
or echo unexpected status $status

echo '# optional val, short and long valid'
fish_opt --short h -l help --optional-val
or echo unexpected status $status

echo '# optional val, short and long but the short var cannot be used'
fish_opt --short h -l help --optional-val --long-only
or echo unexpected status $status

echo '# repeated val, short and long valid'
fish_opt --short h -l help --multiple-vals
or echo unexpected status $status

echo '# repeated val, short and long but short not valid'
fish_opt --short h -l help --multiple-vals --long-only
or echo unexpected status $status

echo '# repeated val, short only'
fish_opt -s h --multiple-vals
or echo unexpected status $status
fish_opt -s h --multiple-vals --long-only
or echo unexpected status $status