1
0

split_buffer_test.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from __future__ import unicode_literals
  2. from __future__ import absolute_import
  3. from compose.cli.utils import split_buffer
  4. from .. import unittest
  5. class SplitBufferTest(unittest.TestCase):
  6. def test_single_line_chunks(self):
  7. def reader():
  8. yield b'abc\n'
  9. yield b'def\n'
  10. yield b'ghi\n'
  11. self.assert_produces(reader, [b'abc\n', b'def\n', b'ghi\n'])
  12. def test_no_end_separator(self):
  13. def reader():
  14. yield b'abc\n'
  15. yield b'def\n'
  16. yield b'ghi'
  17. self.assert_produces(reader, [b'abc\n', b'def\n', b'ghi'])
  18. def test_multiple_line_chunk(self):
  19. def reader():
  20. yield b'abc\ndef\nghi'
  21. self.assert_produces(reader, [b'abc\n', b'def\n', b'ghi'])
  22. def test_chunked_line(self):
  23. def reader():
  24. yield b'a'
  25. yield b'b'
  26. yield b'c'
  27. yield b'\n'
  28. yield b'd'
  29. self.assert_produces(reader, [b'abc\n', b'd'])
  30. def test_preserves_unicode_sequences_within_lines(self):
  31. string = u"a\u2022c\n".encode('utf-8')
  32. def reader():
  33. yield string
  34. self.assert_produces(reader, [string])
  35. def assert_produces(self, reader, expectations):
  36. split = split_buffer(reader(), b'\n')
  37. for (actual, expected) in zip(split, expectations):
  38. self.assertEqual(type(actual), type(expected))
  39. self.assertEqual(actual, expected)