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'}