Exemplo n.º 1
0
def run_arguments(GG_ARGUMENTS, preference=None):
    """ Run different algorithms with input arguments """
    STUDENT_IDENTIFIERS = remove_absent_students.remove_missing_students(
        GG_ARGUMENTS.absentees,
        read_student_file.read_csv_data(GG_ARGUMENTS.file))
    logging.info("GatorGrouper will group these students:")
    logging.info("\n %s",
                 display.create_escaped_string_from_list(STUDENT_IDENTIFIERS))

    # shuffle the student identifiers
    SHUFFLED_STUDENT_IDENTIFIERS = group_creation.shuffle_students(
        STUDENT_IDENTIFIERS)
    logging.info("GatorGrouper randomly ordered the students:")
    logging.info(
        "\n %s",
        display.create_escaped_string_from_list(SHUFFLED_STUDENT_IDENTIFIERS))

    GROUPED_STUDENTS = input_interface(
        students=SHUFFLED_STUDENT_IDENTIFIERS,
        method=GG_ARGUMENTS.method,
        num_group=GG_ARGUMENTS.num_group,
        preferences=preference,
        preferences_weight=GG_ARGUMENTS.preferences_weight,
        preferences_weight_match=GG_ARGUMENTS.preferences_weight_match,
        objective_weights=GG_ARGUMENTS.objective_weights,
        objective_measures=GG_ARGUMENTS.objective_measures,
    )

    return GROUPED_STUDENTS
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
def test_read_student_file_no_header_float(generate_csv_float_no_header):
    """ Test read_student_file """
    expectedoutput = [
        ["delgrecoj", 1.2, 0.7, 1.1, 0.2],
        ["delgrecoj2", 0.1, 0.5, 0.8, 0.6],
    ]
    assert (read_student_file.read_csv_data(generate_csv_float_no_header) ==
            expectedoutput)
Exemplo n.º 7
0
def test_read_student_file_no_header(generate_csv_no_header):
    """ Test read_student_file """
    expectedoutput = [
        ["delgrecoj", True, True, False, True],
        ["delgrecoj2", True, True, True, True],
    ]
    assert read_student_file.read_csv_data(
        generate_csv_no_header) == expectedoutput
Exemplo n.º 8
0
def test_read_student_file(generate_csv):
    """ Test read_student_file """
    expectedoutput = [
        ["delgrecoj", True, True, False, True],
        ["delgrecoj2", True, True, False, True],
        ["delgrecoj3", True, True, False, True],
        ["delgrecoj4", True, True, False, True],
        ["delgrecoj5", True, True, False, True],
        ["delgrecoj6", True, True, False, True],
    ]
    assert read_student_file.read_csv_data(generate_csv) == expectedoutput
Exemplo n.º 9
0
def check_valid(args, students_list):
    """Verify the command-line arguments"""
    verified_arguments = False
    students_list_length = len(students_list)
    if args.group_size > 1 and args.group_size <= students_list_length / 2:
        verified_arguments = True
    if args.num_group > 1 and args.group_size <= students_list_length / 2:
        verified_arguments = True
    if args.file is constants.NONE:
        verified_arguments = False
    if read_student_file.read_csv_data(args.file) == "":
        verified_arguments = False
    return verified_arguments
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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(
        GG_ARGUMENTS, input_list)
    if check_if_arguments_valid is False:
        print("Incorrect command-line arguments.")
        sys.exit(1)
Exemplo n.º 12
0
def test_read_student_file_float(generate_csv_float):
    """ Test read_student_file """
    expectedoutput = [["delgrecoj", 1.2, 1.1, 0.9, 2.3]]
    assert read_student_file.read_csv_data(
        generate_csv_float) == expectedoutput
Exemplo n.º 13
0
def test_no_file_found():
    """ No file found """
    assert read_student_file.read_csv_data("fakepath") == ""
Exemplo n.º 14
0
from gatorgrouper.utils import group_rrobin
from gatorgrouper.utils import group_random
from gatorgrouper.utils import group_graph
from gatorgrouper.utils import display
from gatorgrouper.utils import constants

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)
    check_if_arguments_valid = parse_arguments.check_valid(
        GG_ARGUMENTS, input_list)
    if check_if_arguments_valid is False:
        print("Incorrect command-line arguments.")
        sys.exit(1)
    else:
        STUDENT_IDENTIFIERS = remove_absent_students.remove_missing_students(
            GG_ARGUMENTS.absentees,
            read_student_file.read_csv_data(GG_ARGUMENTS.file))
        logging.info("GatorGrouper will group these students:")
        logging.info(
            "\n %s",
            display.create_escaped_string_from_list(STUDENT_IDENTIFIERS))

        # shuffle the student identifiers