Exemplo n.º 1
0
def test_init(op_list):
    def validate(x):
        return isinstance(x, DummyOperation)

    # Test automatic to_synced_list function generation
    slist = SyncedList(validation_func=validate)
    assert slist._validate == validate
    op = DummyOperation()
    assert slist._to_synced_list_conversion(op) is op

    # Test specified to_synced_list
    def cpp_identity(x):
        return x._cpp_obj

    slist = SyncedList(validation_func=validate, to_synced_list=cpp_identity)
    assert slist._to_synced_list_conversion == cpp_identity
    op._cpp_obj = 2
    assert slist._to_synced_list_conversion(op) == 2

    # Test full initialziation
    slist = SyncedList(validation_func=validate,
                       to_synced_list=cpp_identity,
                       iterable=op_list)
    assert len(slist._list) == 3
    assert all(op._added for op in slist)
Exemplo n.º 2
0
def test_value_add_and_attach(slist):
    op = DummyOperation()
    assert not slist._value_add_and_attach(op)._attached
    assert op._added
    slist._synced_list = []
    slist._simulation = DummySimulation()
    op = DummyOperation()
    assert slist._value_add_and_attach(op)._attached
    assert op._added
Exemplo n.º 3
0
def test_contains(slist_empty, op_list):
    for op in op_list:
        slist_empty._list.append(op)
        assert op in slist_empty
        new_op = DummyOperation()
        print(id(new_op), [id(op) for op in slist_empty])
        assert new_op not in slist_empty
Exemplo n.º 4
0
def test_setitem(slist, op_list):
    with raises(IndexError):
        slist[3]
    with raises(IndexError):
        slist[-4]
    new_op = DummyOperation()
    slist[1] = new_op
    assert new_op is slist[1]
    assert new_op._added

    # Check when attached
    sync_list = []
    slist._sync(None, sync_list)
    new_op = DummyOperation()
    old_op = slist[1]
    slist[1] = new_op
    assert not (old_op._attached or old_op._added)
    assert new_op._attached and new_op._added
    assert sync_list[1] is new_op
Exemplo n.º 5
0
def base_op():
    return DummyOperation()
Exemplo n.º 6
0
def op_list():
    return [DummyOperation(), DummyOperation(), DummyOperation()]
Exemplo n.º 7
0
def test_validate_or_error(slist):
    with raises(ValueError):
        slist._validate_or_error(3)
        slist._validate_or_error(None)
        slist._validate_or_error("hello")
    assert slist._validate_or_error(DummyOperation())
Exemplo n.º 8
0
 def generate(n):
     return [DummyOperation() for _ in range(n)]