|
2 | 2 | from sublime_lib import ViewStream |
3 | 3 |
|
4 | 4 | from unittest import TestCase |
5 | | -from io import UnsupportedOperation |
| 5 | +from io import UnsupportedOperation, StringIO |
6 | 6 |
|
7 | 7 |
|
8 | 8 | class TestViewStream(TestCase): |
@@ -48,11 +48,12 @@ def test_write_size(self): |
48 | 48 | self.assertEqual(size, self.stream.view.size()) |
49 | 49 |
|
50 | 50 | def test_no_indent(self): |
51 | | - text = "Hello\n World\n!" |
| 51 | + text = " " |
52 | 52 |
|
53 | 53 | self.stream.view.settings().set('auto_indent', True) |
54 | 54 | self.stream.write(text) |
55 | | - self.assertContents(text) |
| 55 | + self.stream.write("\n") |
| 56 | + self.assertContents(text + "\n") |
56 | 57 |
|
57 | 58 | def test_clear(self): |
58 | 59 | self.stream.write("Some text") |
@@ -109,17 +110,66 @@ def test_readline(self): |
109 | 110 | self.assertEqual(text, "World") |
110 | 111 | self.assertEqual(self.stream.tell(), 12) |
111 | 112 |
|
112 | | - def test_write_only(self): |
| 113 | + def test_write_read_only_failure(self): |
113 | 114 | self.stream.view.set_read_only(True) |
114 | 115 |
|
115 | 116 | self.assertRaises(ValueError, self.stream.write, 'foo') |
116 | 117 | self.assertRaises(ValueError, self.stream.clear) |
117 | 118 |
|
| 119 | + def test_write_read_only_success(self): |
| 120 | + self.stream.view.set_read_only(True) |
118 | 121 | self.stream.force_writes = True |
119 | | - self.assertEqual(self.stream.write('foo'), 3) |
| 122 | + |
| 123 | + self.stream.write('foo') |
| 124 | + self.assertContents('foo') |
| 125 | + |
| 126 | + self.stream.clear() |
| 127 | + self.assertContents('') |
| 128 | + |
| 129 | + def _compare_print(self, *args, **kwargs): |
| 130 | + s = StringIO() |
| 131 | + print(*args, file=s, **kwargs) |
| 132 | + |
| 133 | + self.stream.clear() |
| 134 | + self.stream.print(*args, **kwargs) |
| 135 | + |
| 136 | + self.assertContents(s.getvalue()) |
| 137 | + |
| 138 | + self.stream.clear() |
| 139 | + print(*args, file=self.stream, **kwargs) |
| 140 | + |
| 141 | + self.assertContents(s.getvalue()) |
| 142 | + |
| 143 | + def test_print(self): |
| 144 | + text = "Hello, World!" |
| 145 | + number = 42 |
| 146 | + |
| 147 | + self._compare_print(text, number) |
| 148 | + self._compare_print(text, number, sep=',', end=';') |
| 149 | + self._compare_print(text, number, sep='', end='') |
| 150 | + |
| 151 | + def test_print_no_indent(self): |
| 152 | + text = " " |
| 153 | + |
| 154 | + self.stream.view.settings().set('auto_indent', True) |
| 155 | + self.stream.print(text) |
| 156 | + self.assertContents(text + "\n") |
| 157 | + |
| 158 | + def test_print_read_only_failure(self): |
| 159 | + self.stream.view.set_read_only(True) |
| 160 | + |
| 161 | + self.assertRaises(ValueError, self.stream.print, 'foo') |
| 162 | + self.assertRaises(ValueError, self.stream.clear) |
| 163 | + |
| 164 | + def test_print_read_only_success(self): |
| 165 | + self.stream.view.set_read_only(True) |
| 166 | + self.stream.force_writes = True |
| 167 | + |
| 168 | + self.stream.print('foo') |
| 169 | + self.assertContents("foo\n") |
120 | 170 |
|
121 | 171 | self.stream.clear() |
122 | | - self.assertEqual(self.stream.view.size(), 0) |
| 172 | + self.assertContents('') |
123 | 173 |
|
124 | 174 | def test_unsupported(self): |
125 | 175 | self.assertRaises(UnsupportedOperation, self.stream.detach) |
|
0 commit comments