def test_read(self): sources = [TestConcatSource.DummySource(range(start, start + 10)) for start in [0, 10, 20]] concat = ConcatSource(sources) range_tracker = concat.get_range_tracker(None, None) read_data = [value for value in concat.read(range_tracker)] self.assertCountEqual(list(range(30)), read_data)
def test_read(self): sources = [TestConcatSource.DummySource(range(start, start + 10)) for start in [0, 10, 20]] concat = ConcatSource(sources) range_tracker = concat.get_range_tracker(None, None) read_data = [value for value in concat.read(range_tracker)] self.assertItemsEqual(range(30), read_data)
def test_conact_source(self): source = ConcatSource([ RangeSource(0, 4), RangeSource(4, 8), RangeSource(8, 12), RangeSource(12, 16), ]) self.assertEqual(list(source.read(source.get_range_tracker())), list(range(16))) self.assertEqual( list(source.read(source.get_range_tracker((1, None), (2, 10)))), list(range(4, 10))) range_tracker = source.get_range_tracker(None, None) self.assertEqual(range_tracker.position_at_fraction(0), (0, 0)) self.assertEqual(range_tracker.position_at_fraction(.5), (2, 8)) self.assertEqual(range_tracker.position_at_fraction(.625), (2, 10)) # Simulate a read. self.assertEqual(range_tracker.try_claim((0, None)), True) self.assertEqual(range_tracker.sub_range_tracker(0).try_claim(2), True) self.assertEqual(range_tracker.fraction_consumed(), 0.125) self.assertEqual(range_tracker.try_claim((1, None)), True) self.assertEqual(range_tracker.sub_range_tracker(1).try_claim(6), True) self.assertEqual(range_tracker.fraction_consumed(), 0.375) self.assertEqual(range_tracker.try_split((0, 1)), None) self.assertEqual(range_tracker.try_split((1, 5)), None) self.assertEqual(range_tracker.try_split((3, 14)), ((3, None), 0.75)) self.assertEqual(range_tracker.try_claim((3, None)), False) self.assertEqual(range_tracker.sub_range_tracker(1).try_claim(7), True) self.assertEqual(range_tracker.try_claim((2, None)), True) self.assertEqual(range_tracker.sub_range_tracker(2).try_claim(9), True) self.assertEqual(range_tracker.try_split((2, 8)), None) self.assertEqual(range_tracker.try_split((2, 11)), ((2, 11), 11. / 12)) self.assertEqual( range_tracker.sub_range_tracker(2).try_claim(10), True) self.assertEqual( range_tracker.sub_range_tracker(2).try_claim(11), False)
def test_conact_source(self): source = ConcatSource([RangeSource(0, 4), RangeSource(4, 8), RangeSource(8, 12), RangeSource(12, 16), ]) self.assertEqual(list(source.read(source.get_range_tracker())), range(16)) self.assertEqual(list(source.read(source.get_range_tracker((1, None), (2, 10)))), range(4, 10)) range_tracker = source.get_range_tracker(None, None) self.assertEqual(range_tracker.position_at_fraction(0), (0, 0)) self.assertEqual(range_tracker.position_at_fraction(.5), (2, 8)) self.assertEqual(range_tracker.position_at_fraction(.625), (2, 10)) # Simulate a read. self.assertEqual(range_tracker.try_claim((0, None)), True) self.assertEqual(range_tracker.sub_range_tracker(0).try_claim(2), True) self.assertEqual(range_tracker.fraction_consumed(), 0.125) self.assertEqual(range_tracker.try_claim((1, None)), True) self.assertEqual(range_tracker.sub_range_tracker(1).try_claim(6), True) self.assertEqual(range_tracker.fraction_consumed(), 0.375) self.assertEqual(range_tracker.try_split((0, 1)), None) self.assertEqual(range_tracker.try_split((1, 5)), None) self.assertEqual(range_tracker.try_split((3, 14)), ((3, None), 0.75)) self.assertEqual(range_tracker.try_claim((3, None)), False) self.assertEqual(range_tracker.sub_range_tracker(1).try_claim(7), True) self.assertEqual(range_tracker.try_claim((2, None)), True) self.assertEqual(range_tracker.sub_range_tracker(2).try_claim(9), True) self.assertEqual(range_tracker.try_split((2, 8)), None) self.assertEqual(range_tracker.try_split((2, 11)), ((2, 11), 11. / 12)) self.assertEqual(range_tracker.sub_range_tracker(2).try_claim(10), True) self.assertEqual(range_tracker.sub_range_tracker(2).try_claim(11), False)