def test_parse_empty_list(self): argparser = ArgParser(None, '() 80 (50) ()') assert argparser.parse() == [] assert argparser.parse() == [80] assert argparser.parse() == [[50]] assert argparser.parse() == [] assert len(argparser._arg) == 0
def test_parse_many_sequence(self): argparser = ArgParser(None, '5:20 20:5 99:* *:99') assert argparser.parse() == [(5, 20)] assert argparser.parse() == [(5, 20)] assert argparser.parse() == [(99, None)] assert argparser.parse() == [(99, None)] assert len(argparser._arg) == 0
def test_parse_complex_lists(self): argparser = ArgParser(None, '(50) ("Hello") (Hello) (Hello "World" 50 a "a" 2515 53:531 5:* *:5 5:*,591,261,9:5 "Hello again world")') assert argparser.parse() == [[50]] assert argparser.parse() == ['Hello'] assert argparser.parse() == ['Hello'] assert argparser.parse() == ['Hello', 'World', [50], 'a', 'a', [2515], [(53, 531)], [(5, None)], [(5, None)], [(5, None), 591, 261, (5, 9)], 'Hello again world'] assert len(argparser._arg) == 0
def test_parse_list_within_lists(self): argparser = ArgParser(None, 'a 50 (90 (60) 80,40 (70 30 20 (10) (55 65 45) 99)) 51 b') assert argparser.parse() == 'a' assert argparser.parse() == [50] assert argparser.parse() == [[90], [[60]], [80, 40], [[70], [30], [20], [[10]], [[55], [65], [45]], [99]]] assert argparser.parse() == [51] assert argparser.parse() == 'b' assert len(argparser._arg) == 0
def test_parse_many_string(self): argparser = ArgParser(None, '"Hello" "World" foo bar "xyz"') assert argparser.parse() == 'Hello' assert argparser.parse() == 'World' assert argparser.parse() == 'foo' assert argparser.parse() == 'bar' assert argparser.parse() == 'xyz' assert len(argparser._arg) == 0
def test_literal(self): class Sock(object): def read(self, size): return 'abcdefghij' def readline(self): return '' def sendline(self, data): pass argparser = ArgParser(Sock(), '{10}\r\n') assert argparser.parse() == 'abcdefghij' assert len(argparser._arg) == 0
def test_literal_surrounded(self): class Sock(object): def read(self, size): return 'a b c d e f g ' def readline(self): return '(e f) g h i' def sendline(self, data): pass argparser = ArgParser(Sock(), 'a (b c d) {15}\r\n') assert argparser.parse() == 'a' assert argparser.parse() == ['b', 'c', 'd'] assert argparser.parse() == 'a b c d e f g ' assert argparser.parse() == ['e', 'f'] assert argparser.parse() == 'g' assert argparser.parse() == 'h' assert argparser.parse() == 'i' assert len(argparser._arg) == 0
def test_parse_single_string(self): argparser = ArgParser(None, '"Hello"') assert argparser.parse() == 'Hello' assert len(argparser._arg) == 0
def test_parse_simple_list_of_strings(self): argparser = ArgParser(None, '(Hello World foo bar xyz)') assert argparser.parse() == ['Hello', 'World', 'foo', 'bar', 'xyz'] assert len(argparser._arg) == 0
def test_parse_many_multi_sequence(self): argparser = ArgParser(None, '10:20 5:20,20:5,99:*,*:99 20:10') assert argparser.parse() == [(10, 20)] assert argparser.parse() == [(5, 20), (5, 20), (99, None), (99, None)] assert argparser.parse() == [(10, 20)] assert len(argparser._arg) == 0
def test_parse_section(self): argparser = ArgParser(None, 'BODY.PEEK[HEADER.FIELDS (Date From To Cc Subject Message-ID References In-Reply-To)]') assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', None), ('FIELDS', ['Date', 'From', 'To', 'Cc', 'Subject', 'Message-ID', 'References', 'In-Reply-To'])) assert len(argparser._arg) == 0
def test_parse_section_with_spec_msgtext(self): argparser = ArgParser(None, 'TEST1 BODY.PEEK[4.2.6.564.494.HEADER.FIELDS (AnotherTest AnotherTest2)] TEST2') assert argparser.parse() == 'TEST1' assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', '4.2.6.564.494.'), ('FIELDS', ['AnotherTest', 'AnotherTest2'])) assert argparser.parse() == 'TEST2' assert len(argparser._arg) == 0
def test_parse_section_with_partial_5(self): argparser = ArgParser(None, '(a b c) BODY.PEEK[HEADER.FIELDS ()] (d e f)') assert argparser.parse() == ['a', 'b', 'c'] assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', None), ('FIELDS', [])) assert argparser.parse() == ['d', 'e', 'f'] assert len(argparser._arg) == 0
def test_parse_section_with_partial_3(self): argparser = ArgParser(None, '(a b c) BODY.PEEK[HEADER.FIELDS]<356.26.3631> (d e f)') assert argparser.parse() == ['a', 'b', 'c'] assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', None), ('PARTIAL', (356, 26, 3631))) assert argparser.parse() == ['d', 'e', 'f'] assert len(argparser._arg) == 0
def test_parse_section_with_partial_2(self): argparser = ArgParser(None, 'BODY.PEEK[HEADER.FIELDS]<356.26.3631>') assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', None), ('PARTIAL', (356, 26, 3631))) assert len(argparser._arg) == 0
def test_parse_many_list_of_strings(self): argparser = ArgParser(None, '(Hello World) ("Hello") ("Hello" World "foo" "bar" xyz)') assert argparser.parse() == ['Hello', 'World'] assert argparser.parse() == ['Hello'] assert argparser.parse() == ['Hello', 'World', 'foo', 'bar', 'xyz'] assert len(argparser._arg) == 0
def test_parse_single_sequence(self): argparser = ArgParser(None, '5:20') assert argparser.parse() == [(5, 20)] assert len(argparser._arg) == 0
def test_parse_single_number(self): argparser = ArgParser(None, '20') assert argparser.parse() == [20] assert len(argparser._arg) == 0
def test_parse_empty(self): argparser = ArgParser(None, '') assert argparser.parse() == None assert argparser.parse() == None assert len(argparser._arg) == 0
def test_parse_many_number(self): argparser = ArgParser(None, '20,40,60,80') assert argparser.parse() == [20, 40, 60, 80] assert len(argparser._arg) == 0
def test_parse_section_no_header_list(self): argparser = ArgParser(None, 'BODY.PEEK[HEADER.FIELDS]') assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', None)) assert len(argparser._arg) == 0
def test_parse_section_empty_fields(self): argparser = ArgParser(None, 'BODY.PEEK[HEADER.FIELDS ()]') assert argparser.parse()[1] == ('BODY.PEEK', ('HEADER.FIELDS', None), ('FIELDS', [])) assert len(argparser._arg) == 0