Пример #1
0
def test_variable_node_more_specific_first():
    node = Node()
    xy_node = node.add(Step('x{x}y'))
    xay_node = node.add(Step('xa{x}y'))
    ay_node = node.add(Step('a{x}y'))
    assert node.get('xwhaty') == (xy_node, {'x': 'what'})
    assert node.get('xawhaty') == (xay_node, {'x': 'what'})
    assert node.get('awhaty') == (ay_node, {'x': 'what'})
Пример #2
0
def test_multi_mixed_step():
    step = Step("{foo}a{bar}")
    assert step.s == "{foo}a{bar}"
    assert step.generalized == "{}a{}"
    assert step.parts == ("", "a", "")
    assert step.names == ["foo", "bar"]
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == "{}a{}"
Пример #3
0
def test_steps_the_same():
    step1 = Step('{foo}')
    step2 = Step('{foo}')
    assert step1 == step2
    assert not step1 != step2
    assert not step1 < step2
    assert not step1 > step2
    assert step1 >= step2
    assert step1 <= step2
Пример #4
0
def test_step_different():
    step1 = Step('{foo}')
    step2 = Step('bar')
    assert step1 != step2
    assert not step1 == step2
    assert not step1 < step2
    assert step1 > step2
    assert step1 >= step2
    assert not step1 <= step2
Пример #5
0
def test_multi_mixed_step():
    step = Step('{foo}a{bar}')
    assert step.s == '{foo}a{bar}'
    assert step.generalized == '{}a{}'
    assert step.parts == ('', 'a', '')
    assert step.names == ['foo', 'bar']
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == '{}a{}'
Пример #6
0
def test_multi_mixed_step():
    step = Step('{foo}a{bar}')
    assert step.s == '{foo}a{bar}'
    assert step.generalized == '{}a{}'
    assert step.parts == ('', 'a', '')
    assert step.names == ['foo', 'bar']
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == '{}a{}'
Пример #7
0
def test_multi_mixed_step():
    step = Step("{foo}a{bar}")
    assert step.s == "{foo}a{bar}"
    assert step.generalized == "{}a{}"
    assert step.parts == ("", "a", "")
    assert step.names == ["foo", "bar"]
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == "{}a{}"
Пример #8
0
def test_step_different():
    step1 = Step("{foo}")
    step2 = Step("bar")
    assert step1 != step2
    assert not step1 == step2
    assert not step1 < step2
    assert step1 > step2
    assert step1 >= step2
    assert not step1 <= step2
Пример #9
0
def test_variable_step():
    step = Step("{foo}")
    assert step.s == "{foo}"
    assert step.generalized == "{}"
    assert step.parts == ("", "")
    assert step.names == ["foo"]
    assert step.converters == {}
    assert step.has_variables()
    assert step.match("bar") == (True, {"foo": "bar"})
    assert step.discriminator_info() == "{}"
Пример #10
0
def test_variable_step():
    step = Step('{foo}')
    assert step.s == '{foo}'
    assert step.generalized == '{}'
    assert step.parts == ('', '')
    assert step.names == ['foo']
    assert step.converters == {}
    assert step.has_variables()
    assert step.match('bar') == (True, {'foo': 'bar'})
    assert step.discriminator_info() == '{}'
Пример #11
0
def test_variable_step():
    step = Step('{foo}')
    assert step.s == '{foo}'
    assert step.generalized == '{}'
    assert step.parts == ('', '')
    assert step.names == ['foo']
    assert step.converters == {}
    assert step.has_variables()
    assert step.match('bar') == (True, {'foo': 'bar'})
    assert step.discriminator_info() == '{}'
Пример #12
0
def test_mixed_step():
    step = Step('a{foo}b')
    assert step.s == 'a{foo}b'
    assert step.generalized == 'a{}b'
    assert step.parts == ('a', 'b')
    assert step.names == ['foo']
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == 'a{}b'

    variables = {}
    assert step.match('abarb', variables)
    assert variables == {'foo': 'bar'}

    variables = {}
    assert not step.match('ab', variables)
    assert not variables

    variables = {}
    assert not step.match('xbary', variables)
    assert not variables

    variables = {}
    assert not step.match('yabarbx', variables)
    assert not variables

    variables = {}
    assert not step.match('afoo', variables)
    assert not variables
Пример #13
0
def test_mixed_step():
    step = Step("a{foo}b")
    assert step.s == "a{foo}b"
    assert step.generalized == "a{}b"
    assert step.parts == ("a", "b")
    assert step.names == ["foo"]
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == "a{}b"

    variables = {}
    assert step.match("abarb", variables)
    assert variables == {"foo": "bar"}

    variables = {}
    assert not step.match("ab", variables)
    assert not variables

    variables = {}
    assert not step.match("xbary", variables)
    assert not variables

    variables = {}
    assert not step.match("yabarbx", variables)
    assert not variables

    variables = {}
    assert not step.match("afoo", variables)
    assert not variables
Пример #14
0
def test_converter():
    step = Step("{foo}", converters=dict(foo=Converter(int)))
    assert step.discriminator_info() == "{}"

    variables = {}
    assert step.match("1", variables)
    assert variables == {"foo": 1}

    variables = {}
    assert not step.match("x", variables)
    assert not variables
Пример #15
0
def test_name_step():
    step = Step('foo')
    assert step.s == 'foo'
    assert step.generalized == 'foo'
    assert step.parts == ('foo',)
    assert step.names == []
    assert step.converters == {}
    assert not step.has_variables()
    assert step.match('foo') == (True, {})
    assert step.match('bar') == (False, {})
    assert step.discriminator_info() == 'foo'
Пример #16
0
def test_converter():
    step = Step('{foo}', converters=dict(foo=Converter(int)))
    assert step.discriminator_info() == '{}'

    variables = {}
    assert step.match('1', variables)
    assert variables == {'foo': 1}

    variables = {}
    assert not step.match('x', variables)
    assert not variables
Пример #17
0
def test_converter():
    step = Step('{foo}', converters=dict(foo=Converter(int)))
    assert step.discriminator_info() == '{}'

    variables = {}
    assert step.match('1', variables)
    assert variables == {'foo': 1}

    variables = {}
    assert not step.match('x', variables)
    assert not variables
Пример #18
0
def test_name_step():
    step = Step('foo')
    assert step.s == 'foo'
    assert step.generalized == 'foo'
    assert step.parts == ('foo',)
    assert step.names == []
    assert step.converters == {}
    assert not step.has_variables()
    assert step.match('foo') == (True, {})
    assert step.match('bar') == (False, {})
    assert step.discriminator_info() == 'foo'
Пример #19
0
def test_name_step():
    step = Step("foo")
    assert step.s == "foo"
    assert step.generalized == "foo"
    assert step.parts == ("foo",)
    assert step.names == []
    assert step.converters == {}
    assert not step.has_variables()
    assert step.match("foo") == (True, {})
    assert step.match("bar") == (False, {})
    assert step.discriminator_info() == "foo"
Пример #20
0
def test_variable_node_optional_colon():
    node = Node()
    x_node = node.add(Step('{x}'))
    xy_node = node.add(Step('{x}:{y}'))

    variables = {}
    assert node.resolve('a', variables) is x_node
    assert variables == {'x': 'a'}

    variables = {}
    assert node.resolve('a:b', variables) is xy_node
    assert variables == {'x': 'a', 'y': 'b'}
Пример #21
0
def test_variable_node_optional_colon():
    node = Node()
    x_node = node.add(Step("{x}"))
    xy_node = node.add(Step("{x}:{y}"))

    variables = {}
    assert node.resolve("a", variables) is x_node
    assert variables == {"x": "a"}

    variables = {}
    assert node.resolve("a:b", variables) is xy_node
    assert variables == {"x": "a", "y": "b"}
Пример #22
0
def test_variable_node_specific_first():
    node = Node()
    x_node = node.add(Step("{x}"))

    prefix_node = node.add(Step("prefix{x}"))

    variables = {}
    assert node.resolve("what", variables) is x_node
    assert variables == {"x": "what"}

    variables = {}
    assert node.resolve("prefixwhat", variables) is prefix_node
    assert variables == {"x": "what"}
Пример #23
0
def test_variable_node_specific_first():
    node = Node()
    x_node = node.add(Step('{x}'))

    prefix_node = node.add(Step('prefix{x}'))

    variables = {}
    assert node.resolve('what', variables) is x_node
    assert variables == {'x': 'what'}

    variables = {}
    assert node.resolve('prefixwhat', variables) is prefix_node
    assert variables == {'x': 'what'}
Пример #24
0
def test_variable_step():
    step = Step("{foo}")
    assert step.s == "{foo}"
    assert step.generalized == "{}"
    assert step.parts == ("", "")
    assert step.names == ["foo"]
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == "{}"

    variables = {}
    assert step.match("bar", variables)
    assert variables == {"foo": "bar"}
Пример #25
0
def test_mixed_step():
    step = Step('a{foo}b')
    assert step.s == 'a{foo}b'
    assert step.generalized == 'a{}b'
    assert step.parts == ('a', 'b')
    assert step.names == ['foo']
    assert step.converters == {}
    assert step.has_variables()
    assert step.discriminator_info() == 'a{}b'

    variables = {}
    assert step.match('abarb', variables)
    assert variables == {'foo': 'bar'}

    variables = {}
    assert not step.match('ab', variables)
    assert not variables

    variables = {}
    assert not step.match('xbary', variables)
    assert not variables

    variables = {}
    assert not step.match('yabarbx', variables)
    assert not variables

    variables = {}
    assert not step.match('afoo', variables)
    assert not variables
Пример #26
0
def test_variable_node_more_specific_first():
    node = Node()
    xy_node = node.add(Step("x{x}y"))
    xay_node = node.add(Step("xa{x}y"))
    ay_node = node.add(Step("a{x}y"))

    variables = {}
    assert node.resolve("xwhaty", variables) is xy_node
    assert variables == {"x": "what"}

    variables = {}
    assert node.resolve("xawhaty", variables) is xay_node
    assert variables == {"x": "what"}

    variables = {}
    assert node.resolve("awhaty", variables) is ay_node
    assert variables == {"x": "what"}
Пример #27
0
def test_variable_node_more_specific_first():
    node = Node()
    xy_node = node.add(Step('x{x}y'))
    xay_node = node.add(Step('xa{x}y'))
    ay_node = node.add(Step('a{x}y'))

    variables = {}
    assert node.resolve('xwhaty', variables) is xy_node
    assert variables == {'x': 'what'}

    variables = {}
    assert node.resolve('xawhaty', variables) is xay_node
    assert variables == {'x': 'what'}

    variables = {}
    assert node.resolve('awhaty', variables) is ay_node
    assert variables == {'x': 'what'}
Пример #28
0
def test_name_node():
    node = Node()
    step_node = node.add(Step('foo'))
    variables = {}
    assert node.resolve('foo', variables) is step_node
    assert not variables

    assert node.resolve('bar', variables) is None
    assert not variables
Пример #29
0
def test_name_node():
    node = Node()
    step_node = node.add(Step("foo"))
    variables = {}
    assert node.resolve("foo", variables) is step_node
    assert not variables

    assert node.resolve("bar", variables) is None
    assert not variables
Пример #30
0
def test_variable_node():
    node = Node()

    step_node = node.add(Step("{x}"))
    variables = {}
    assert node.resolve("foo", variables) is step_node
    assert variables == {"x": "foo"}

    variables = {}
    assert node.resolve("bar", variables) is step_node
    assert variables == {"x": "bar"}
Пример #31
0
def test_variable_node():
    node = Node()

    step_node = node.add(Step('{x}'))
    variables = {}
    assert node.resolve('foo', variables) is step_node
    assert variables == {'x': 'foo'}

    variables = {}
    assert node.resolve('bar', variables) is step_node
    assert variables == {'x': 'bar'}
Пример #32
0
def test_mixed_step():
    step = Step('a{foo}b')
    assert step.s == 'a{foo}b'
    assert step.generalized == 'a{}b'
    assert step.parts == ('a', 'b')
    assert step.names == ['foo']
    assert step.converters == [str]
    assert step.has_variables()
    assert step.match('abarb') == (True, {'foo': 'bar'})
    assert step.match('ab') == (False, {})
    assert step.match('xbary') == (False, {})
    assert step.match('yabarbx') == (False, {})
    assert step.match('afoo') == (False, {})
    assert step.discriminator_info() == 'a{str}b'
Пример #33
0
def test_mixed_step():
    step = Step("a{foo}b")
    assert step.s == "a{foo}b"
    assert step.generalized == "a{}b"
    assert step.parts == ("a", "b")
    assert step.names == ["foo"]
    assert step.converters == {}
    assert step.has_variables()
    assert step.match("abarb") == (True, {"foo": "bar"})
    assert step.match("ab") == (False, {})
    assert step.match("xbary") == (False, {})
    assert step.match("yabarbx") == (False, {})
    assert step.match("afoo") == (False, {})
    assert step.discriminator_info() == "a{}b"
Пример #34
0
def test_mixed_node():
    node = Node()
    step_node = node.add(Step("prefix{x}postfix"))

    variables = {}
    assert node.resolve("prefixfoopostfix", variables) is step_node
    assert variables == {"x": "foo"}

    variables = {}
    assert node.resolve("prefixbarpostfix", variables) is step_node
    assert variables == {"x": "bar"}

    variables = {}
    assert node.resolve("prefixwhat", variables) is None
    assert variables == {}
Пример #35
0
def test_mixed_node():
    node = Node()
    step_node = node.add(Step('prefix{x}postfix'))

    variables = {}
    assert node.resolve('prefixfoopostfix', variables) is step_node
    assert variables == {'x': 'foo'}

    variables = {}
    assert node.resolve('prefixbarpostfix', variables) is step_node
    assert variables == {'x': 'bar'}

    variables = {}
    assert node.resolve('prefixwhat', variables) is None
    assert variables == {}
Пример #36
0
def test_name_step():
    step = Step("foo")
    assert step.s == "foo"
    assert step.generalized == "foo"
    assert step.parts == ("foo", )
    assert step.names == []
    assert step.converters == {}
    assert step.discriminator_info() == "foo"

    assert not step.has_variables()
    variables = {}
    assert step.match("foo", variables)
    assert variables == {}
    assert not step.match("bar", variables)
    assert variables == {}
Пример #37
0
def test_illegal_consecutive_variables():
    with pytest.raises(TrajectError):
        Step('{a}{b}')
Пример #38
0
def test_converter():
    step = Step('{foo:int}')
    assert step.match('1') == (True, {'foo': 1})
    assert step.match('x') == (False, {})
    assert step.discriminator_info() == '{int}'
Пример #39
0
def test_converter():
    step = Step("{foo}", converters=dict(foo=Converter(int)))
    assert step.match("1") == (True, {"foo": 1})
    assert step.match("x") == (False, {})
    assert step.discriminator_info() == "{}"
Пример #40
0
def test_illegal_identifier():
    with pytest.raises(TrajectError):
        Step('{1}')
Пример #41
0
def test_unknown_converter():
    with pytest.raises(TrajectError):
        Step('{foo:blurb}')
Пример #42
0
def test_converter():
    step = Step('{foo}', converters=dict(foo=Converter(int)))
    assert step.match('1') == (True, {'foo': 1})
    assert step.match('x') == (False, {})
    assert step.discriminator_info() == '{}'
Пример #43
0
def test_illegal_variable():
    with pytest.raises(TrajectError):
        Step('{a:int:int}')