コード例 #1
0
ファイル: test_merge.py プロジェクト: tor4z/myia
def test_merge_modes():

    for x, y in [({1, 2}, {3, 4}), ([1, 2], [3, 4]), ((1, 2), (3, 4))]:

        assert merge(x, y, mode="reset") == y
        assert merge(x, Reset(y)) == y
        assert merge(x, Reset(y), mode="merge") == y

        assert merge(x, y, mode="override") == y
        assert merge(x, Override(y)) == y
        assert merge(x, Override(y), mode="merge") == y

    a = {"a": 1}
    b = {"b": 2}
    c = {"a": 1, "b": 2}

    assert merge(a, b, mode="reset") == b
    assert merge(a, b, mode="override") == c

    a = {"a": [1, 2], "b": [3, 4]}
    b = {"a": [5, 6], "b": Override([7, 8])}
    c = {"a": [1, 2, 5, 6], "b": [7, 8]}
    d = {"a": [5, 6], "b": [7, 8]}

    assert merge(a, b) == c
    assert merge(a, b, mode="override") == d

    a = {"a": [1, 2]}
    assert merge(a, Merge(a=[3, 4])) == {"a": [1, 2, 3, 4]}
コード例 #2
0
ファイル: test_pipeline.py プロジェクト: leozhoupeng83/myia
def test_Pipeline_configure(op_pipeline):
    pdef = op_pipeline

    pip = pdef.configure(addp=Merge(param=2)).make()
    assert pip(value=3) == {'value': 100}

    pip = pdef.configure({'addp.param': 2}).make()
    assert pip(value=3) == {'value': 100}

    pip = pdef.configure({
        'addp.param': 2
    }, addp=Merge(op=lambda p, x: p - x)).make()
    assert pip(value=3) == {'value': 4}

    pip = pdef.configure(addp=Reset(op=lambda p, x: p - x, param=2)).make()
    assert pip(value=3) == {'value': 4}

    with pytest.raises(TypeError):
        pdef.configure(addp=Reset(param=2)).make()

    pip = pdef.configure(mulp=False).make()
    assert pip(value=3) == {'value': 16}

    with pytest.raises(KeyError):
        pip = pdef.configure(mulp=False).configure(mulp=True).make()

    pip = pdef.configure(mulp=False).configure(addp=False).make()
    assert pip(value=3) == {'value': 9}

    with pytest.raises(KeyError):
        pdef.configure(quack=[1, 2])
コード例 #3
0
def test_merge_modes():

    for x, y in [({1, 2}, {3, 4}), ([1, 2], [3, 4]), ((1, 2), (3, 4))]:

        assert merge(x, y, mode='reset') == y
        assert merge(x, Reset(y)) == y
        assert merge(x, Reset(y), mode='merge') == y

        assert merge(x, y, mode='override') == y
        assert merge(x, Override(y)) == y
        assert merge(x, Override(y), mode='merge') == y

    a = {'a': 1}
    b = {'b': 2}
    c = {'a': 1, 'b': 2}

    assert merge(a, b, mode='reset') == b
    assert merge(a, b, mode='override') == c

    a = {'a': [1, 2], 'b': [3, 4]}
    b = {'a': [5, 6], 'b': Override([7, 8])}
    c = {'a': [1, 2, 5, 6], 'b': [7, 8]}
    d = {'a': [5, 6], 'b': [7, 8]}

    assert merge(a, b) == c
    assert merge(a, b, mode='override') == d
コード例 #4
0
ファイル: test_pipeline.py プロジェクト: stjordanis/myia
def test_Pipeline_configure(op_pipeline):
    pdef = op_pipeline

    pip = pdef.configure(addp=Merge(param=2)).make()
    assert pip(value=3) == {'value': 100}

    pip = pdef.configure({'addp.param': 2}).make()
    assert pip(value=3) == {'value': 100}

    pip = pdef.configure(
        {'addp.param': 2},
        addp=Merge(op=lambda p, x: p - x)
    ).make()
    assert pip(value=3) == {'value': 4}

    pip = pdef.configure(addp=Reset(op=lambda p, x: p - x, param=2)).make()
    assert pip(value=3) == {'value': 4}

    with pytest.raises(TypeError):
        pdef.configure(addp=Reset(param=2)).make()

    pip = pdef.configure(mulp=False).make()
    assert pip(value=3) == {'value': 16}

    pip = pdef.configure(mulp=False).configure(mulp=True).make()
    assert pip(value=3) == {'value': 64}

    pip = pdef.configure(mulp=False).configure(addp=False).make()
    assert pip(value=3) == {'value': 9}

    pip = pdef.configure(param=3).make()
    assert pip(value=3) == {'value': 144}

    with pytest.raises(KeyError):
        pdef.configure(quack=[1, 2])

    pdef2 = pdef.configure_resources(quack=[1, 2])
    assert pdef2.make().resources.quack == [1, 2]
    assert pdef2.configure(quack=Merge([3])).make().resources.quack \
        == [1, 2, 3]
    assert pdef2.configure(quack=[3]).make().resources.quack == [3]
コード例 #5
0
ファイル: test_partial.py プロジェクト: stjordanis/myia
def test_Partial():

    def f(x, y):
        return x + y

    p1 = Partial(f, x=10)
    p2 = Partial(f, y=20)

    assert p1(y=3) == 13
    assert p2(x=3) == 23
    assert merge(p1, p2)() == 30
    assert merge(p1, {'y': 20})() == 30

    with pytest.raises(TypeError):
        Partial(f, z=10)

    p3 = Reset(Partial(f, y=20))
    with pytest.raises(TypeError):
        merge(p1, p3)()

    p4 = Partial(f, x=[1, 2])
    p5 = Partial(f, x=[3, 4])

    assert merge(p4, p5)(y=[10]) == [1, 2, 3, 4, 10]
    assert merge(p5, p4)(y=[10]) == [3, 4, 1, 2, 10]

    p6 = Override(Partial(f, x=[3, 4]))
    assert merge(p4, p6)(y=[10]) == [3, 4, 10]

    def g(x, y):
        return x * y

    p7 = Partial(g, y=20)
    with pytest.raises(ValueError):
        merge(p1, p7)

    p8 = Override(Partial(g, y=20))
    assert merge(p1, p8)() == 200

    def h(**kw):
        return kw

    p9 = Partial(h, x=10)
    assert p9(y=20, z=30) == dict(x=10, y=20, z=30)

    str(p9), repr(p9)