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'})
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'})
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"})
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_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'})
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"})
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"})