def do_test(template): proj = Project(None) temp_docs = proj.editors try: m = Mocker() all_docs = [] dirty_docs = [] for item in template: doc = m.mock(Editor) all_docs.append(doc) doc.is_dirty >> (item == "d") if item == "d": dirty_docs.append(doc) proj.editors = all_docs with m: result = list(proj.dirty_editors()) assert len(dirty_docs) == template.count("d") assert dirty_docs == result, "%r != %r" % (dirty_docs, result) finally: proj.editors = temp_docs