multiplexer_test.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from __future__ import absolute_import
  2. from __future__ import unicode_literals
  3. import unittest
  4. from compose.cli.multiplexer import Multiplexer
  5. class MultiplexerTest(unittest.TestCase):
  6. def test_no_iterators(self):
  7. mux = Multiplexer([])
  8. self.assertEqual([], list(mux.loop()))
  9. def test_empty_iterators(self):
  10. mux = Multiplexer([
  11. (x for x in []),
  12. (x for x in []),
  13. ])
  14. self.assertEqual([], list(mux.loop()))
  15. def test_aggregates_output(self):
  16. mux = Multiplexer([
  17. (x for x in [0, 2, 4]),
  18. (x for x in [1, 3, 5]),
  19. ])
  20. self.assertEqual(
  21. [0, 1, 2, 3, 4, 5],
  22. sorted(list(mux.loop())),
  23. )
  24. def test_exception(self):
  25. class Problem(Exception):
  26. pass
  27. def problematic_iterator():
  28. yield 0
  29. yield 2
  30. raise Problem(":(")
  31. mux = Multiplexer([
  32. problematic_iterator(),
  33. (x for x in [1, 3, 5]),
  34. ])
  35. with self.assertRaises(Problem):
  36. list(mux.loop())