def test_parse_arguments1(no_arguments, capsys): """No command-line arguments is incorrect""" with pytest.raises(SystemExit): parse_arguments.parse_arguments(no_arguments) standard_out, standard_err = capsys.readouterr() assert standard_out is constants.EMPTY_STRING assert constants.ERROR in standard_err
def test_file_argument_empty(): """Check that invalid file arguments will not verify correctly""" wrong_arguments = ["--file", ""] parsed_arguments = parse_arguments.parse_arguments(wrong_arguments) input_list = read_student_file.read_csv_data(parsed_arguments.file) checker = parse_arguments.check_valid(parsed_arguments, input_list) assert checker is False
def test_valid_size(generate_csv): """Check that valid size arguments will not verify correctly""" correct_arguments = ["--file", generate_csv, "--group-size", "3"] parsed_arguments = parse_arguments.parse_arguments(correct_arguments) input_list = read_student_file.read_csv_data(parsed_arguments.file) checker = parse_arguments.check_valid(parsed_arguments, input_list) assert checker is True
def test_parse_arguments2(generate_csv): """Testing specfied arguments""" args = ["--debug", "--file", generate_csv, "--random"] parsed_args = parse_arguments.parse_arguments(args) assert parsed_args.logging_level == logging.DEBUG assert "csvNg.csv" in parsed_args.file assert parsed_args.grouping_method == constants.ALGORITHM_RANDOM
def test_file_argument_verifiable(generate_csv): """Check that valid file arguments will verify correctly""" correct_arguments = ["--file", generate_csv] parsed_arguments = parse_arguments.parse_arguments(correct_arguments) input_list = read_student_file.read_csv_data(parsed_arguments.file) checker = parse_arguments.check_valid(parsed_arguments, input_list) assert checker is True
def test_invalid_input(generate_csv): """Check that invalid size and number arguments will not verify correctly""" wrong_arguments = ["--file", generate_csv, "--num-group", "7"] parsed_arguments = parse_arguments.parse_arguments(wrong_arguments) input_list = read_student_file.read_csv_data(parsed_arguments.file) checker = parse_arguments.check_valid(parsed_arguments, input_list) assert checker is False
def test_parse_arguments4(generate_csv): """Testing specfied arguments""" args = [ "--absentees", "maria", "--file", generate_csv, "--rrobin", "--group-size", "3", ] parsed_args = parse_arguments.parse_arguments(args) assert parsed_args.group_size == 3 assert parsed_args.grouping_method == constants.ALGORITHM_ROUND_ROBIN assert parsed_args.absentees == ["maria"]
def test_run_graph(generate_csv, generate_csv_preference): """ Test if the main program can run group graph with preference """ command = [ "--file", generate_csv, "--num-group", "2", "--method", "graph", "--preferences", generate_csv_preference, "--preferences-weight", "1.1", "--preferences-weight-match", "1.3", ] input_arguments = parse_arguments.parse_arguments(command) preference = dict(read_student_file.read_csv_data(input_arguments.preferences)) output = run.run_arguments(input_arguments, preference) assert len(output) == 2
""" GatorGrouper randomly assigns a list of students to groups """ import sys import logging from gatorgrouper.utils import parse_arguments from gatorgrouper.utils import read_student_file from gatorgrouper.utils import display from gatorgrouper.utils import run if __name__ == "__main__": # pragma: no cover # parse the arguments and display welcome message GG_ARGUMENTS = parse_arguments.parse_arguments(sys.argv[1:]) display.display_welcome_message() logging.info("Configuration of GatorGrouper:") logging.debug(GG_ARGUMENTS) # read in the student identifiers from the specified file input_list = read_student_file.read_csv_data(GG_ARGUMENTS.file) if GG_ARGUMENTS.preferences is None: preference = None else: # Filter out empty names and students without preferences from the preferences CSV preference_list = [[ entry for entry in row if entry != "" ] for row in read_student_file.read_csv_data(GG_ARGUMENTS.preferences) if len(row) > 1] # Associate student with set of preferred students preference = {row[0]: set(row[1:]) for row in preference_list} check_if_arguments_valid = parse_arguments.check_valid(
def test_parse_arguments5(generate_csv): """Testing specfied arguments""" args = ["--file", generate_csv, "--num-group", "3"] parsed_args = parse_arguments.parse_arguments(args) assert parsed_args.num_group == 3
def test_parse_gatorgrouper_arguments3(generate_csv): """Testing specfied arguments""" args = ["--verbose", "--file", generate_csv, "--rrobin"] parsed_args = parse_arguments.parse_arguments(args) assert parsed_args.logging_level == logging.INFO assert parsed_args.grouping_method == constants.ALGORITHM_ROUND_ROBIN
def test_run_random_remove_absent(generate_csv): """ Test if the main program can run group random with absent student """ command = ["--file", generate_csv, "--num-group", "3", "--absentees", "delgrecoj"] input_arguments = parse_arguments.parse_arguments(command) output = run.run_arguments(input_arguments) assert len(output) == 3
def test_run_rrobin(generate_csv): """ Test if the main program can run rrobin""" command = ["--file", generate_csv, "--num-group", "3", "--method", "rrobin"] input_arguments = parse_arguments.parse_arguments(command) output = run.run_arguments(input_arguments) assert len(output) == 3