def test_traject_variable_specific_first():
    traject = Traject()
    traject.add_pattern('a/{x}/b', 'axb')
    traject.add_pattern('a/prefix{x}/b', 'aprefixxb')
    assert traject.consume(['b', 'lah', 'a']) == ('axb', [], {'x': 'lah'})
    assert traject.consume(['b', 'prefixlah', 'a']) == (
        'aprefixxb', [], {'x': 'lah'})
Exemple #2
0
def test_traject_greedy_middle_prefix():
    traject = Traject()
    traject.add_pattern('a/prefix{x}/y', 'prefix')
    traject.add_pattern('a/{x}/z', 'no_prefix')

    assert traject.consume(['y', 'prefixX', 'a']) == ('prefix', [], {'x': 'X'})
    assert traject.consume(['z', 'prefixX', 'a']) == (None, ['z'], {'x': 'X'})
    assert traject.consume(['z', 'blah', 'a']) == ('no_prefix', [], {'x': 'blah'})
Exemple #3
0
def test_traject_greedy_middle_prefix():
    traject = Traject()
    traject.add_pattern("a/prefix{x}/y", "prefix")
    traject.add_pattern("a/{x}/z", "no_prefix")

    assert traject.consume(["y", "prefixX", "a"]) == ("prefix", [], {"x": "X"})
    assert traject.consume(["z", "prefixX", "a"]) == (None, ["z"], {"x": "X"})
    assert traject.consume(["z", "blah", "a"]) == ("no_prefix", [], {"x": "blah"})
Exemple #4
0
def test_traject_simple():
    traject = Traject()
    traject.add_pattern("a/b/c", "abc")
    traject.add_pattern("a/b/d", "abd")
    traject.add_pattern("x/y", "xy")
    traject.add_pattern("x/z", "xz")

    assert traject.consume(["c", "b", "a"]) == ("abc", [], {})
    assert traject.consume(["d", "b", "a"]) == ("abd", [], {})
    assert traject.consume(["y", "x"]) == ("xy", [], {})
    assert traject.consume(["z", "x"]) == ("xz", [], {})
    assert traject.consume(["d", "c", "b", "a"]) == ("abc", ["d"], {})
    assert traject.consume(["d", "d", "b", "a"]) == ("abd", ["d"], {})
    assert traject.consume(["3", "2", "1", "y", "x"]) == ("xy", ["3", "2", "1"], {})
    assert traject.consume(["3", "2", "1"]) == (None, ["3", "2", "1"], {})
    assert traject.consume(["b", "a"]) == (None, [], {})
Exemple #5
0
def test_traject_simple():
    traject = Traject()
    traject.add_pattern('a/b/c', 'abc')
    traject.add_pattern('a/b/d', 'abd')
    traject.add_pattern('x/y', 'xy')
    traject.add_pattern('x/z', 'xz')

    assert traject.consume(['c', 'b', 'a']) == ('abc', [], {})
    assert traject.consume(['d', 'b', 'a']) == ('abd', [], {})
    assert traject.consume(['y', 'x']) == ('xy', [], {})
    assert traject.consume(['z', 'x']) == ('xz', [], {})
    assert traject.consume(['d', 'c', 'b', 'a']) == ('abc', ['d'], {})
    assert traject.consume(['d', 'd', 'b', 'a']) == ('abd', ['d'], {})
    assert traject.consume(['3', '2', '1', 'y', 'x']) == ('xy', ['3', '2', '1'], {})
    assert traject.consume(['3', '2', '1']) == (None, ['3', '2', '1'], {})
    assert traject.consume(['b', 'a']) == (None, [], {})
def test_traject_with_converter():
    traject = Traject()
    traject.add_pattern('{x}', 'found', dict(x=Converter(int)))
    assert traject.consume(['1']) == ('found', [], {'x': 1})
    assert traject.consume(['foo']) == (None, ['foo'], {})
def test_traject_multiple_steps_with_variables():
    traject = Traject()
    traject.add_pattern('{x}/{y}', 'xy')
    assert traject.consume(['y', 'x']) == ('xy', [], {'x': 'x', 'y': 'y'})
Exemple #8
0
def test_traject_with_converter():
    traject = Traject()
    traject.add_pattern("{x}", "found", dict(x=Converter(int)))
    assert traject.consume(["1"]) == ("found", [], {"x": 1})
    assert traject.consume(["foo"]) == (None, ["foo"], {})
Exemple #9
0
def test_traject_multiple_steps_with_variables():
    traject = Traject()
    traject.add_pattern("{x}/{y}", "xy")
    assert traject.consume(["y", "x"]) == ("xy", [], {"x": "x", "y": "y"})
Exemple #10
0
def test_traject_variable_specific_first():
    traject = Traject()
    traject.add_pattern("a/{x}/b", "axb")
    traject.add_pattern("a/prefix{x}/b", "aprefixxb")
    assert traject.consume(["b", "lah", "a"]) == ("axb", [], {"x": "lah"})
    assert traject.consume(["b", "prefixlah", "a"]) == ("aprefixxb", [], {"x": "lah"})