50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
import pytest
|
|
|
|
from zvk.plugins.vk.command import Argument, CommandEventConsumer, CommandParseException
|
|
|
|
|
|
def test_signatures_easy():
|
|
a = CommandEventConsumer('a', Argument('n', type=int))
|
|
|
|
assert a.parse_argstring('1') == {'n': 1}
|
|
|
|
with pytest.raises(Exception):
|
|
assert a.parse_argstring('dsa') == {'n': 1}
|
|
|
|
with pytest.raises(CommandParseException):
|
|
assert a.parse_argstring('-h')
|
|
|
|
with pytest.raises(CommandParseException):
|
|
assert a.parse_argstring('dsa')
|
|
|
|
with pytest.raises(CommandParseException):
|
|
assert a.parse_argstring('')
|
|
|
|
with pytest.raises(CommandParseException):
|
|
assert a.parse_argstring('--arg=1')
|
|
|
|
assert a.parse_argstring('"1"') == {'n': 1}
|
|
|
|
with pytest.raises(CommandParseException):
|
|
assert a.parse_argstring('"')
|
|
|
|
|
|
def test_signatures_complex():
|
|
a = CommandEventConsumer('a',
|
|
Argument('n', nargs='?', type=int, default=0),
|
|
Argument('-n', '--n', dest='m', type=int, default=2),
|
|
Argument('-v', action='store_true'),
|
|
Argument('--s', type=str))
|
|
|
|
assert a.parse_argstring('1') == {'n': 1, 'm': 2, 'v': False, 's': None}
|
|
assert a.parse_argstring('--n=1') == {'n': 0, 'm': 1, 'v': False, 's': None}
|
|
assert a.parse_argstring('--n 1') == {'n': 0, 'm': 1, 'v': False, 's': None}
|
|
assert a.parse_argstring('-n 1') == {'n': 0, 'm': 1, 'v': False, 's': None}
|
|
assert a.parse_argstring('-vn1') == {'n': 0, 'm': 1, 'v': True, 's': None}
|
|
|
|
|
|
def test_signatures_whole():
|
|
a = CommandEventConsumer('a', whole_argstring=True)
|
|
|
|
assert a.parse_argstring('d ksja jd j jj jj --n -h 2') == {'argstring': 'd ksja jd j jj jj --n -h 2'}
|