Beispiel #1
0
def test_basic_pattern_matching():
    # ( -a N [ -x Z ] )
    pattern = Required(Option('a'), Argument('N'),
                       Optional(Option('x'), Argument('Z')))
    # -a N
    assert pattern.match([Option('a'), Argument(None, 9)]) == (
            True, [], [Argument('N', 9)])
    # -a -x N Z
    assert pattern.match([Option('a'), Option('x'),
                          Argument(None, 9), Argument(None, 5)]) == (
                                True, [], [Argument('N', 9), Argument('Z', 5)])
    # -x N Z  # BZZ!
    assert pattern.match([Option('x'),
                          Argument(None, 9),
                          Argument(None, 5)]) == (
                                False, [Option('x'),
                                        Argument(None, 9),
                                        Argument(None, 5)], [])
Beispiel #2
0
def test_pattern_any_option():
    pattern = AnyOptions()
    assert pattern.match([Option('a')]) == (True, [], [])
    assert pattern.match([Option('b')]) == (True, [], [])
    assert pattern.match([Option('l', 'long')]) == (True, [], [])
    assert pattern.match([Option(None, 'long')]) == (True, [], [])
    assert pattern.match([Option('a'), Option('b')]) == (True, [], [])
    assert pattern.match([Option('a'), Option(None, 'long')]) == (True, [], [])
    assert not pattern.match([Argument('N')])[0]