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
Exemple #10
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
Exemple #11
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
Exemple #12
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
Exemple #13
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
Exemple #14
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
Exemple #15
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
Exemple #16
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
Exemple #17
0
 def test_parse_single_sequence(self):
     argparser = ArgParser(None, '5:20')
     assert argparser.parse() == [(5, 20)]
     assert len(argparser._arg) == 0
Exemple #18
0
 def test_parse_single_number(self):
     argparser = ArgParser(None, '20')
     assert argparser.parse() == [20]
     assert len(argparser._arg) == 0
Exemple #19
0
 def test_parse_empty(self):
     argparser = ArgParser(None, '')
     assert argparser.parse() == None
     assert argparser.parse() == None
     assert len(argparser._arg) == 0
Exemple #20
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
Exemple #21
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
Exemple #22
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