(self)
| 85 | |
| 86 | class BufferSizesTests(BaseTests, unittest.TestCase): |
| 87 | def test_buffer_sizes(self): |
| 88 | |
| 89 | t1 = self.writeTmp(''.join("Line %s of file 1\n" % (i+1) for i in range(15))) |
| 90 | t2 = self.writeTmp(''.join("Line %s of file 2\n" % (i+1) for i in range(10))) |
| 91 | t3 = self.writeTmp(''.join("Line %s of file 3\n" % (i+1) for i in range(5))) |
| 92 | t4 = self.writeTmp(''.join("Line %s of file 4\n" % (i+1) for i in range(1))) |
| 93 | |
| 94 | pat = re.compile(r'LINE (\d+) OF FILE (\d+)') |
| 95 | |
| 96 | if verbose: |
| 97 | print('1. Simple iteration') |
| 98 | fi = FileInput(files=(t1, t2, t3, t4), encoding="utf-8") |
| 99 | lines = list(fi) |
| 100 | fi.close() |
| 101 | self.assertEqual(len(lines), 31) |
| 102 | self.assertEqual(lines[4], 'Line 5 of file 1\n') |
| 103 | self.assertEqual(lines[30], 'Line 1 of file 4\n') |
| 104 | self.assertEqual(fi.lineno(), 31) |
| 105 | self.assertEqual(fi.filename(), t4) |
| 106 | |
| 107 | if verbose: |
| 108 | print('2. Status variables') |
| 109 | fi = FileInput(files=(t1, t2, t3, t4), encoding="utf-8") |
| 110 | s = "x" |
| 111 | while s and s != 'Line 6 of file 2\n': |
| 112 | s = fi.readline() |
| 113 | self.assertEqual(fi.filename(), t2) |
| 114 | self.assertEqual(fi.lineno(), 21) |
| 115 | self.assertEqual(fi.filelineno(), 6) |
| 116 | self.assertFalse(fi.isfirstline()) |
| 117 | self.assertFalse(fi.isstdin()) |
| 118 | |
| 119 | if verbose: |
| 120 | print('3. Nextfile') |
| 121 | fi.nextfile() |
| 122 | self.assertEqual(fi.readline(), 'Line 1 of file 3\n') |
| 123 | self.assertEqual(fi.lineno(), 22) |
| 124 | fi.close() |
| 125 | |
| 126 | if verbose: |
| 127 | print('4. Stdin') |
| 128 | fi = FileInput(files=(t1, t2, t3, t4, '-'), encoding="utf-8") |
| 129 | savestdin = sys.stdin |
| 130 | try: |
| 131 | sys.stdin = StringIO("Line 1 of stdin\nLine 2 of stdin\n") |
| 132 | lines = list(fi) |
| 133 | self.assertEqual(len(lines), 33) |
| 134 | self.assertEqual(lines[32], 'Line 2 of stdin\n') |
| 135 | self.assertEqual(fi.filename(), '<stdin>') |
| 136 | fi.nextfile() |
| 137 | finally: |
| 138 | sys.stdin = savestdin |
| 139 | |
| 140 | if verbose: |
| 141 | print('5. Boundary conditions') |
| 142 | fi = FileInput(files=(t1, t2, t3, t4), encoding="utf-8") |
| 143 | self.assertEqual(fi.lineno(), 0) |
| 144 | self.assertEqual(fi.filename(), None) |
nothing calls this directly
no test coverage detected