Esempio n. 1
0
def main():
    args = create_parser()

    if args.version:
        print(__version__)
        sys.exit()

    log = logging.StreamHandler(sys.stderr)
    log.setFormatter(logging.Formatter(
        '%(asctime)s [%(levelname)s <%(name)s>] %(message)s'))

    for module_ in (sys.modules[__name__], map_reduce):
        logger = logging.getLogger(module_.LOGGER_NAME)
        logger.setLevel(logging.DEBUG if args.debug else logging.ERROR)
        logger.addHandler(log)

    map_reduce.MapReduce(
        input_filename=args.filename,
        output_filename=args.output,
        separator=args.separator,
        temp_directory=args.temp,
        size_of_one_piece=args.piece,
        ignore_case=args.ignore_case,
        numeric_sort=args.numeric_sort,
        reverse=args.reverse,
        debug=args.debug)
Esempio n. 2
0
    def test_correct_thatNumbersNotRecognizedAdStringsAtAll(self):
        data = '\n'.join('94 96 6 97 99 100 0'.split())
        self.create_file_for_sorting(data)

        map_reduce.MapReduce(input_filename=self.input_filename,
                             output_filename=self.output_filename,
                             separator='\n',
                             temp_directory=self.directory,
                             size_of_one_piece=4,
                             ignore_case=False,
                             numeric_sort=True,
                             reverse=False,
                             debug=False)

        actual = self.get_data_from_file(self.output_filename)
        self.assertEqual('0 6 94 96 97 99 100', actual.replace('\n', ' ', 10))
Esempio n. 3
0
    def test_correct_thatNumbersNotRecognizedAdStringsInPiece(self):
        data = '11 1 2'
        self.create_file_for_sorting(data)

        map_reduce.MapReduce(input_filename=self.input_filename,
                             output_filename=self.output_filename,
                             separator=' ',
                             temp_directory=self.directory,
                             size_of_one_piece=100,
                             ignore_case=False,
                             numeric_sort=True,
                             reverse=False,
                             debug=False)

        actual = self.get_data_from_file(self.output_filename)
        self.assertEqual('1 2 11', actual)
Esempio n. 4
0
    def test_correctSort_whenFileDivideIntoTwoPieces(self):
        data = '4 1 3 2'
        self.create_file_for_sorting(data)

        map_reduce.MapReduce(input_filename=self.input_filename,
                             output_filename=self.output_filename,
                             separator=' ',
                             temp_directory=self.directory,
                             size_of_one_piece=4,
                             ignore_case=False,
                             numeric_sort=True,
                             reverse=False,
                             debug=False)

        actual = self.get_data_from_file(self.output_filename)
        self.assertEqual('1 2 3 4', actual)
Esempio n. 5
0
    def test_correctSort_whenPositiveAndNegativeNumbers(self):
        data = '0 1 -1 2 -2 3 -3 4 -4 5 -5'
        self.create_file_for_sorting(data)

        map_reduce.MapReduce(input_filename=self.input_filename,
                             output_filename=self.output_filename,
                             separator=' ',
                             temp_directory=self.directory,
                             size_of_one_piece=4,
                             ignore_case=False,
                             numeric_sort=True,
                             reverse=False,
                             debug=False)

        actual = self.get_data_from_file(self.output_filename)
        self.assertEqual('-5 -4 -3 -2 -1 0 1 2 3 4 5', actual)
Esempio n. 6
0
    def test_correctSort_lenghtInputFileAndOutputFileAreEquals(self):
        data = '18 20 4 2 19 5 16 14 1 17 6 13 10 15 8 3 11 12 7 9'
        self.create_file_for_sorting(data)

        map_reduce.MapReduce(input_filename=self.input_filename,
                             output_filename=self.output_filename,
                             separator=' ',
                             temp_directory=self.directory,
                             size_of_one_piece=5,
                             ignore_case=False,
                             numeric_sort=True,
                             reverse=False,
                             debug=False)

        expected = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20'
        actual = self.get_data_from_file(self.output_filename)
        self.assertEqual(expected, actual)