Esempio n. 1
0
def test_criterion_homogeneous_raise_invalidanswererror():
    question = survey.NumericQuestion(1, 'Do you like food?', 0, 10)
    answer1 = [survey.Answer(11)]
    answer2 = [survey.Answer(False)]
    answer3 = [survey.Answer(5), survey.Answer(False)]
    with pytest.raises(InvalidAnswerError):
        criterion.HomogeneousCriterion().score_answers(question, answer1)
        criterion.HomogeneousCriterion().score_answers(question, answer2)
        criterion.HomogeneousCriterion().score_answers(question, answer3)
Esempio n. 2
0
def test_survey_class_survey_set_criterion() -> None:
    criteria = criterion.HomogeneousCriterion()
    question1 = survey.YesNoQuestion(1, 'Hello?')
    survey1 = survey.Survey([question1])
    survey1.set_criterion(criteria, question1)
    # noinspection PyProtectedMember
    assert question1.id in survey1._criteria
Esempio n. 3
0
def criterions():
    c1 = criterion.HomogeneousCriterion()
    c2 = criterion.HeterogeneousCriterion()
    c3 = criterion.LonelyMemberCriterion()

    d1 = {"Homogeneous": c1, "Heterogeneous": c2, "LonelyMember": c3}
    return d1
Esempio n. 4
0
 def test_homo_mc(self):
     c = criterion.HomogeneousCriterion()
     q = survey.MultipleChoiceQuestion(0, "Shit", ["A", "B", "C"])
     a1 = survey.Answer("A")
     a2 = survey.Answer("B")
     a3 = survey.Answer("C")
     assert c.score_answers(q, [a1]) == 1.0, '''single answer should result in 1'''
     assert c.score_answers(q, [a1, a2]) == 0
     assert fuck_within(c.score_answers(q, [a1, a1, a1]), 1)
     assert fuck_within(c.score_answers(q, [a1, a2, a1]), 0.33333)
     assert fuck_within(c.score_answers(q, [a1, a2, a1, a3]), 0.166666)
Esempio n. 5
0
def test_survey_class_survey_score_students_raise_invalidanswererror() -> None:
    s1 = course.Student(1, 'Misha')
    students = [s1]
    question1 = survey.NumericQuestion(1, 'Do you like food?', 0, 10)
    answer1 = survey.Answer(True)
    survey1 = survey.Survey([question1])
    criteria = criterion.HomogeneousCriterion()
    weight1 = 1
    s1.set_answer(question1, answer1)
    survey1.set_weight(weight1, question1)
    survey1.set_criterion(criteria, question1)
    assert survey1.score_students(students) == 0.0
Esempio n. 6
0
 def test_score_studs_homog(self, survey_with_YN_question, students,
                            YNQuestions):
     crit = criterion.HomogeneousCriterion()
     for q in YNQuestions:
         for stud in students:
             ans = survey.Answer(False)
             stud.set_answer(q, ans)
     for q in survey_with_YN_question._ques:
         survey_with_YN_question.set_criterion(crit, q)
     for q in survey_with_YN_question._ques:
         survey_with_YN_question.set_weight(0.5, q)
     assert pytest.approx(
         survey_with_YN_question.score_students(students)) == 0.5
Esempio n. 7
0
 def test_make_grouping(self, student_odd_ans, course_with_student_odd,
                        GreedyGrouper2, survey_with_NUMq, NumQ):
     survey_with_NUMq.set_weight(0.5, NumQ)
     survey_with_NUMq.set_criterion(criterion.HomogeneousCriterion(), NumQ)
     gr1 = grouper.Group(
         [student_odd_ans[0], student_odd_ans[1], student_odd_ans[2]])
     gr2 = grouper.Group([student_odd_ans[3], student_odd_ans[4]])
     grouping = grouper.Grouping()
     grouping.add_group(gr1)
     grouping.add_group(gr2)
     compare_groupings(
         grouping,
         GreedyGrouper2.make_grouping(course_with_student_odd,
                                      survey_with_NUMq))
Esempio n. 8
0
    def test_homo_numeric(self):
        c = criterion.HomogeneousCriterion()
        q = survey.NumericQuestion(0, "OH Shit", 2, 8)
        a1 = survey.Answer(2)
        a2 = survey.Answer(5)
        a3 = survey.Answer(7)
        assert c.score_answers(q, [a1]) == 1.0, '''single answer should result in 1'''
        assert fuck_within(c.score_answers(q, [a1, a2]), 0.5)
        assert fuck_within(c.score_answers(q, [a1, a1, a2]), 0.66666666)
        assert fuck_within(c.score_answers(q, [a1, a2, a3]), 0.44444444)

        # This is to test you throw an exception when one answer is not valid
        a4 = survey.Answer(10)
        with pytest.raises(criterion.InvalidAnswerError) as info:
            c.score_answers(q, [a4])
        assert info
        with pytest.raises(criterion.InvalidAnswerError) as info:
            c.score_answers(q, [a1, a2, a4])
        assert info
Esempio n. 9
0
def test_criterion_homogeneous_score_answers() -> None:
    question = survey.YesNoQuestion(1, 'Do you like food?')
    answers = [survey.Answer(True), survey.Answer(True), survey.Answer(False)]
    criterions = criterion.HomogeneousCriterion()
    assert criterions.score_answers(question, answers) == 1 / 3
Esempio n. 10
0
 def test_set_criterion(self) -> None:
     s = survey.Survey(self.questions)
     assert s.set_criterion(criterion.LonelyMemberCriterion(), self.q1)
     assert s.set_criterion(criterion.HeterogeneousCriterion(), self.q5)
     assert not s.set_criterion(criterion.HomogeneousCriterion(), self.q2)
Esempio n. 11
0
def h**o():
    return criterion.HomogeneousCriterion()
Esempio n. 12
0
 def test_set_criterion(self, survey_, questions) -> None:
     survey_._criteria = {}
     criterion_ = criterion.HomogeneousCriterion()
     survey_.set_criterion(criterion_, questions[0])
     assert survey_._get_criterion(questions[0]) == criterion_
Esempio n. 13
0
 def test_score_ans_check_box(self, Checkboxq2, Check_ans_lst):
     assert pytest.approx(criterion.HomogeneousCriterion().score_answers(
         Checkboxq2, Check_ans_lst)) == 7 / 36
Esempio n. 14
0
 def test_score_ans_YN_raise_error(self, YNq, lst_of_YN_ans):
     with pytest.raises(criterion.InvalidAnswerError):
         invalid_ans = survey.Answer(1)
         criterion.HomogeneousCriterion().score_answers(
             YNq, lst_of_YN_ans + [invalid_ans])
Esempio n. 15
0
 def test_score_ans_YN(self, YNq, lst_of_YN_ans):
     assert pytest.approx(criterion.HomogeneousCriterion().score_answers(
         YNq, lst_of_YN_ans)) == 0.5
Esempio n. 16
0
 def test__get_criterion(self, survey_, questions, criteria) -> None:
     criteria.append(criterion.HomogeneousCriterion())
     for i, question in enumerate(questions):
         assert isinstance(survey_._get_criterion(question),
                           type(criteria[i]))
Esempio n. 17
0
 def test_homogeneous(self) -> None:
     hom = criterion.HomogeneousCriterion()
     assert hom.score_answers(self.question1, self.answers1) \
         == 0.16666666666666666
     assert hom.score_answers(self.question2, self.answers2) \
         == 0.3333333333333333
Esempio n. 18
0
def criteria(answers) -> List[criterion.Criterion]:
    return [
        criterion.HomogeneousCriterion(),
        criterion.HeterogeneousCriterion(),
        criterion.LonelyMemberCriterion()
    ]
Esempio n. 19
0
 def test_score_ans(self, questions, answers):
     q1 = survey.YesNoQuestion(1, 'hey')
     h = criterion.HomogeneousCriterion()
     assert h.score_answers(q1, []) == 0.0