def setUp(self):
        self.maxDiff = None

        self.data = [i for i in range(30)]
        self.temp_directory = write_data_to_files_in_temp_directory(self.data, 10)

        def extract_adapter(file_path: str) -> Any:
            return extract_data_from_file(file_path, parser=lambda data: int(data), separator='\n')

        self.source = StubFilesDataSource(self.temp_directory)
        self.source.is_data_file = MagicMock(return_value=True)
        self.source.extract_data_from_file = MagicMock(side_effect=extract_adapter)
class TestFilesDataSource(unittest.TestCase):
    """
    Tests for `FilesDataSource`.
    """
    def setUp(self):
        self.maxDiff = None

        self.data = [i for i in range(30)]
        self.temp_directory = write_data_to_files_in_temp_directory(self.data, 10)

        def extract_adapter(file_path: str) -> Any:
            return extract_data_from_file(file_path, parser=lambda data: int(data), separator='\n')

        self.source = StubFilesDataSource(self.temp_directory)
        self.source.is_data_file = MagicMock(return_value=True)
        self.source.extract_data_from_file = MagicMock(side_effect=extract_adapter)

    def test_get_all_with_empty_directory(self):
        empty_directory = mkdtemp(suffix=self._testMethodName)
        source = StubFilesDataSource(empty_directory)

        retrieved_data = source.get_all()
        self.assertEqual(len(retrieved_data), 0)

    def test_get_all(self):
        retrieved_data = self.source.get_all()
        self.assertCountEqual(retrieved_data, self.data)

    def test_get_all_with_filter(self):
        def data_filter(file_path: str) -> bool:
            with open(file_path, 'r') as file:
                return '29' in file.read()

        self.source.is_data_file = MagicMock(side_effect=data_filter)
        retrieved_data = self.source.get_all()
        self.assertCountEqual(retrieved_data, [27, 28, 29])

    def tearDown(self):
        shutil.rmtree(self.temp_directory)
    def test_get_all_with_empty_directory(self):
        empty_directory = mkdtemp(suffix=self._testMethodName)
        source = StubFilesDataSource(empty_directory)

        retrieved_data = source.get_all()
        self.assertEqual(len(retrieved_data), 0)