test_mixin.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # -*- twisted.conch.test.test_mixin -*-
  2. # Copyright (c) Twisted Matrix Laboratories.
  3. # See LICENSE for details.
  4. from twisted.trial import unittest
  5. from twisted.test.proto_helpers import StringTransport
  6. from twisted.conch import mixin
  7. class TestBufferingProto(mixin.BufferingMixin):
  8. scheduled = False
  9. rescheduled = 0
  10. def schedule(self):
  11. self.scheduled = True
  12. return object()
  13. def reschedule(self, token):
  14. self.rescheduled += 1
  15. class BufferingTests(unittest.TestCase):
  16. def testBuffering(self):
  17. p = TestBufferingProto()
  18. t = p.transport = StringTransport()
  19. self.assertFalse(p.scheduled)
  20. L = [b'foo', b'bar', b'baz', b'quux']
  21. p.write(b'foo')
  22. self.assertTrue(p.scheduled)
  23. self.assertFalse(p.rescheduled)
  24. for s in L:
  25. n = p.rescheduled
  26. p.write(s)
  27. self.assertEqual(p.rescheduled, n + 1)
  28. self.assertEqual(t.value(), b'')
  29. p.flush()
  30. self.assertEqual(t.value(), b'foo' + b''.join(L))