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)
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
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
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
def base_op(): return DummyOperation()
def op_list(): return [DummyOperation(), DummyOperation(), DummyOperation()]
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())
def generate(n): return [DummyOperation() for _ in range(n)]