Пример #1
0
def test_like():
    # allow reduction
    result = optimize(parse("'This is a test' LIKE 'This is %' AND attr = 1"))
    assert result == ast.Equal(
        ast.Attribute('attr'),
        1
    )
    result = optimize(
        parse("'This is a test' LIKE 'This is . test' AND attr = 1")
    )
    assert result == ast.Equal(
        ast.Attribute('attr'),
        1
    )

    # don't reduction when an attribute is referenced
    result = optimize(parse("attr LIKE 'This is %'"))
    assert result == ast.Like(
        ast.Attribute('attr'),
        'This is %',
        False,
        '%',
        '.',
        '\\',
        False
    )
Пример #2
0
def test_is_like():
    result = parse('''
    <fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema-datatypes">
      <fes:PropertyIsLike
          wildCard="%"
          singleChar="."
          escapeChar="\\"
          matchCase="true">
        <fes:ValueReference>attr</fes:ValueReference>
        <fes:Literal type="xsd:string">some%</fes:Literal>
      </fes:PropertyIsLike>
    </fes:Filter>
    ''')
    assert result == ast.Like(
        ast.Attribute('attr'),
        'some%',
        nocase=False,
        not_=False,
        wildcard='%',
        singlechar='.',
        escapechar='\\',
    )

    # case insensitive
    result = parse('''
    <fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema-datatypes">
      <fes:PropertyIsLike
          wildCard="%"
          singleChar="."
          escapeChar="\\"
          matchCase="false">
        <fes:ValueReference>attr</fes:ValueReference>
        <fes:Literal type="xsd:string">some%</fes:Literal>
      </fes:PropertyIsLike>
    </fes:Filter>
    ''')
    assert result == ast.Like(
        ast.Attribute('attr'),
        'some%',
        nocase=True,
        not_=False,
        wildcard='%',
        singlechar='.',
        escapechar='\\',
    )
Пример #3
0
def test_string_not_ilike():
    result = parse('attr NOT ILIKE \'some%\'')
    assert result == ast.Like(
        ast.Attribute('attr'),
        'some%',
        nocase=True,
        not_=True,
        wildcard='%',
        singlechar='.',
        escapechar='\\',
    )
Пример #4
0
def test_string_like():
    result = parse(['like', ['get', 'attr'], 'some%'])
    assert result == ast.Like(
        ast.Attribute('attr'),
        'some%',
        nocase=False,
        wildcard='%',
        singlechar='.',
        escapechar='\\',
        not_=False,
    )
Пример #5
0
def test_string_ilike():
    result = parse({
        "like": {
            "like": [
                {"property": "attr"},
                "some%",
            ],
            "nocase": True,
        }
    })
    assert result == ast.Like(
        ast.Attribute('attr'),
        'some%',
        nocase=True,
        not_=False,
        wildcard='%',
        singlechar='.',
        escapechar='\\',
    )
Пример #6
0
def test_string_like():
    result = parse(
        {
            "op": "like",
            "args": [
                {"property": "attr"},
                "some%",
            ],
        }
    )
    assert result == ast.Like(
        ast.Attribute("attr"),
        "some%",
        nocase=False,
        not_=False,
        wildcard="%",
        singlechar=".",
        escapechar="\\",
    )