def compute_difference(pair: ReviewPair) -> float:
    junior_review_average = review_handler.compute_review_result(
        pair.junior_review.review_answers)
    senior_review_average = review_handler.compute_review_result(
        pair.senior_review.review_answers)

    return abs(junior_review_average - senior_review_average)
def test_error_list_wrong_value():
    """
    Tests if passing a list with values other then ReviewAnswers leads to a AttributeError.
    """

    with pytest.raises(AttributeError):
        review_answers = [1, 2, 3]
        review_handler.compute_review_result(review_answers)
def test_error_empty_list():
    """
    Tests if passing an empty list leads to a ValueError.
    """

    with pytest.raises(ValueError):
        review_answers = []
        review_handler.compute_review_result(review_answers)
def test_error_no_list():
    """
    Tests if passing another type than a list leads to a TypeError.
    """

    with pytest.raises(TypeError):
        review_answers = 123
        review_handler.compute_review_result(review_answers)
def test_error_none():
    """
    Tests if passing None leads to a TypeError.
    """

    with pytest.raises(TypeError):
        review_answers = None
        review_handler.compute_review_result(review_answers)
def compute_item_result_score(item_id, session):
    pairs = review_pair_handler.get_review_pairs_by_item(item_id, session)

    average_scores = []
    for pair in list(filter(lambda p: p.is_good, pairs)):
        average_scores.append(review_handler.compute_review_result(
            pair.junior_review.review_answers))
        average_scores.append(review_handler.compute_review_result(
            pair.senior_review.review_answers))
    result = statistics.median(average_scores)
    return result
def test_simple_compute(a, b, c, d, e, f, g, expected):
    """
    Tests simple data sets to ensure review result is computed correctly.
    """

    review_answers = [
        review_answer_creator.generate_answer(a),
        review_answer_creator.generate_answer(b),
        review_answer_creator.generate_answer(c),
        review_answer_creator.generate_answer(d),
        review_answer_creator.generate_answer(e),
        review_answer_creator.generate_answer(f),
        review_answer_creator.generate_answer(g)
    ]

    result = review_handler.compute_review_result(review_answers)

    assert result == expected