コード例 #1
0
def test_delegate_equals():
    assert Delegate() is not Delegate()
    assert Delegate() == Delegate()
    assert Delegate(lambda: None) != Delegate(lambda: None)
    fn = lambda: None
    assert Delegate(fn) == Delegate(fn)
    assert Delegate(fn) != Delegate(fn, fn)
コード例 #2
0
def test_delegate_eq_items():
    def func1():
        pass

    def func2():
        pass

    def func3():
        pass

    d1 = Delegate()
    d1 += func1
    d2 = Delegate()
    d2 += func1
    assert d1 == d2

    d1 += func2
    d2 += func2
    assert d1 == d2

    d1 += func3
    d2 += func3
    assert d1 == d2

    d1 += func1
    d2 += func2
    assert d1 != d2
コード例 #3
0
def test_delegate_add_from_none():
    d = None
    d += Delegate()
    assert isinstance(d, Delegate)
    assert not d

    def func():
        return 1

    d += func
    assert d() == 1
コード例 #4
0
def test_delegate_invoke_return_value():
    def func1():
        return 1

    def func2():
        return 2

    d = Delegate()
    d += func1
    d += func2
    assert d() == 2, 'should be the last one'
コード例 #5
0
def test_delegate_invoke_order():
    def func1(ls: list):
        ls.append(1)

    def func2(ls: list):
        ls.append(2)

    d = Delegate()
    d += func1
    d += func2
    dest = []
    d(dest)
    assert dest == [1, 2], 'should first in first run'
コード例 #6
0
def test_delegate_remove_order():
    def func1(ls: list):
        ls.append(1)

    def func2(ls: list):
        ls.append(2)

    d = Delegate()
    d += func1
    d += func2
    d += func1
    d -= func1
    src = []
    d(src)
    assert src == [1, 2], 'should remove the last match'
コード例 #7
0
def test_delegate_testable():
    assert not Delegate(), 'test empty delegate should be false'
    assert Delegate(lambda: None)
    assert Delegate(lambda: None, lambda: None)
コード例 #8
0
def test_empty_delegate_invoke_raise_error():
    with raises(InvokeEmptyDelegateError):
        Delegate()()
コード例 #9
0
 class A:
     d = Delegate()
コード例 #10
0
def test_delegate_add_none():
    d = Delegate()
    with raises(TypeError):
        d += None