def test_done(self): limiter = TaskLimiter(2) w = ManualWritable() limiter.add(w.write, 1) limiter.add(w.write, 2) limiter.add(w.write, 3) limiter.add(w.write, 4) d = limiter.done() self.assertFalse(d.called) self.assertEqual(w.writing, [1, 2]) self.assertEqual(w.written, []) yield w.next() self.assertFalse(d.called) self.assertEqual(w.writing, [2, 3]) self.assertEqual(w.written, [1]) yield w.next() self.assertFalse(d.called) self.assertEqual(w.writing, [3, 4]) self.assertEqual(w.written, [1, 2]) yield w.next() self.assertFalse(d.called) self.assertEqual(w.writing, [4]) self.assertEqual(w.written, [1, 2, 3]) yield w.next() self.assertTrue(d.called) self.assertEqual(w.writing, []) self.assertEqual(w.written, [1, 2, 3, 4])