def test_eager_load(self): text1 = arrayfiles.read_text(self.fp.name, newline=self.newline, lazy=False) text2 = arrayfiles.read_text(self.fp.name, newline=self.newline, lazy=True) for a, b in zip(text1, text2): self.assertEqual(a, b)
def test_raise_value_error_with_invalid_span(self): text = arrayfiles.read_text(self.fp.name) step = 10 for start in range(0, self.length, step): end = start + step with self.subTest(start=start, end=end): for i, line in zip(range(start, end), text.iterate(start, end)): self.assertEqual(line, f'line #{i}')
def test_raises_index_error_with_invalid_index(self): text = arrayfiles.read_text(self.fp.name) def getitem(i): return text[i] with self.assertRaises(IndexError): getitem(self.length) with self.assertRaises(IndexError): getitem(-self.length - 1)
def test_dunder_setstate(self): text = arrayfiles.read_text(self.fp.name) state = text.__getstate__() self.assertNotIn('_mm', state) text.__setstate__(state) self.assertIn('_mm', text.__dict__)
def test_dunder_len(self): text = arrayfiles.read_text(self.fp.name) self.assertEqual(len(text), self.length) self.assertEqual(len(text[:None]), self.length) self.assertEqual(len(list(text)), self.length)
def test_iterates(self): text = arrayfiles.read_text(self.fp.name) with self.assertRaises(ValueError): next(text.iterate(self.length, 0))
def test_slices_items(self): text = arrayfiles.read_text(self.fp.name) self.assertSequenceEqual(text[:self.length], text)
def test_iterates_each_line(self): text = arrayfiles.read_text(self.fp.name) for i, x in enumerate(text): self.assertEqual(x, f'line #{i}')
def test_supports_random_access(self): text = arrayfiles.read_text(self.fp.name) for i in range(self.length): self.assertEqual(text[i], f'line #{i}') self.assertEqual(text[i - self.length], f'line #{i}')
def test_dunder_init(self): text = arrayfiles.read_text(self.fp.name) self.assertEqual(text._path, self.fp.name) self.assertEqual(text._encoding, 'utf-8')
def test_iterates_each_line(self): text = arrayfiles.read_text(self.fp.name, newline=self.newline) for i, (x, y) in enumerate(zip(text, text[:None])): self.assertEqual(x, y, f'line #{i}')