Пример #1
0
def test_exam_init():
    """test Exam with one and two arguments
    """
    q1, q2 = exam.Question("q1 text",
                           "q1 image"), exam.Question("q2 text", "q2 image")
    ex1 = exam.Exam(q1)
    ex2 = exam.Exam(q1, q2)

    assert ex1.questions == (q1, )
    assert ex2.questions == (q1, q2)
Пример #2
0
def test_exam_questions_setter0():
    """test question set
    """
    q1, q2 = exam.Question("q1 text",
                           "q1 image"), exam.Question("q2 text", "q2 image")
    ex = exam.Exam()
    ex.add_question(q1)
    ex.add_question(q2)

    assert q1 in ex.questions
    assert q2 in ex.questions
Пример #3
0
def test_exam_questions_setter1():
    """test question set; question added before overwritten
    """
    q1, q2 = exam.Question("q1 text",
                           "q1 image"), exam.Question("q2 text", "q2 image")
    ex = exam.Exam()
    ex.add_question(q1)
    ex.questions = (q2, )

    assert q1 not in ex.questions
    assert q2 in ex.questions
Пример #4
0
def test_question_get(attribute, expected):
    """Test default attribute values
    """
    text = "What's your name?"
    q = exam.Question(text)

    assert getattr(q, attribute) == expected
Пример #5
0
def test_question_init0():
    """Test default arguments
    """
    q = exam.Question()
    expected = ""

    assert q.text == expected
Пример #6
0
def test_question_answer_correct1():
    """Test ineffectiveness of correct setting
    for the first answer added
    """
    q = exam.Question("Who are you?")
    a1 = exam.Answer()
    q.add_answer(a1, False)

    assert q.correct_answer == a1
Пример #7
0
def test_question_init2(text, subject, image, level):
    """Test arguments assignments
    """
    q = exam.Question(text, subject=subject, image=image, level=level)

    assert q.text == text
    assert q.subject == subject
    assert q.image == image
    assert q.level == level
Пример #8
0
def test_question_set(attribute, expected):
    """Test set right and wrong attribute
    """
    q = exam.Question()
    try:
        setattr(q, attribute, expected)
    except TypeError:
        assert False

    assert getattr(q, attribute) == expected
Пример #9
0
def test_question_correct_index_set_invalid():
    """Test set invalid correct answer index
    """
    q = exam.Question("Who are you?")
    a1 = exam.Answer()
    a2 = exam.Answer()
    q.add_answer(a1)
    q.add_answer(a2)
    with pytest.raises(ValueError):
        q.correct_index = 2
Пример #10
0
def test_question_answer_add0():
    """Test one answer addition
    and correctness
    """
    q = exam.Question("Who are you?")
    a = exam.Answer()
    q.add_answer(a)

    assert a in q.answers
    assert q.correct_answer == a
    assert q.correct_index == 0
Пример #11
0
def test_question_correct_answer_set1():
    """Test set correct answer index
    """
    q = exam.Question("Who are you?")
    a1 = exam.Answer()
    a2 = exam.Answer()
    q.add_answer(a1)
    q.add_answer(a2)
    q.correct_index = 1

    assert q.correct_answer == a2
    assert q.correct_index == 1
Пример #12
0
def test_question_answer_correct0():
    """Test correctness of the last
    answer added when is set to correct
    """
    q = exam.Question("Who are you?")
    a1 = exam.Answer()
    a2 = exam.Answer()
    q.add_answer(a2)
    q.add_answer(a1, True)

    assert q.correct_answer == a1
    assert q.correct_index == 1
Пример #13
0
def test_question_load0():
    """Empty iterator.
    """
    tupl = ()
    quest = exam.Question()
    quest.load_sequentially(iter(tupl))

    assert quest.text == ""
    assert quest.subject == ""
    assert quest.image == Path()
    assert quest.level == 0
    assert quest.answers == ()
Пример #14
0
def test_question_load2():
    """load a complete question;
    no answer.
    """
    tupl = ("t1", "s1", "p1", "1")
    quest = exam.Question()
    quest.load_sequentially(iter(tupl))

    assert quest.text == tupl[0]
    assert quest.subject == tupl[1]
    assert quest.image == Path(tupl[2])
    assert quest.level == int(tupl[3])
    assert quest.answers == ()
Пример #15
0
def test_question_load1():
    """load question text and subject; check for default image, level;
    no answer.
    """
    tupl = ("t1", "s1")
    quest = exam.Question()
    quest.load_sequentially(iter(tupl))

    assert quest.text == tupl[0]
    assert quest.subject == tupl[1]
    assert quest.image == Path()
    assert quest.level == 0
    assert quest.answers == ()
Пример #16
0
def test_question_load3():
    """load a complete question; the last item is lost
    because answer does not have any attribute
    """
    tupl = ("t1", "s1", "p1", "1", "a1")
    quest = exam.Question()
    quest.load_sequentially(iter(tupl))

    assert quest.text == tupl[0]
    assert quest.subject == tupl[1]
    assert quest.image == Path(tupl[2])
    assert quest.level == int(tupl[3])
    assert quest.answers == ()
Пример #17
0
def test_question_answer_add1():
    """Test two answers addition
    and correctness
    """
    q = exam.Question("Who are you?")
    a1 = exam.Answer()
    a2 = exam.Answer()
    q.add_answer(a1)
    q.add_answer(a2)

    assert q.answers == (a1, a2)
    assert q.correct_answer == a1
    assert q.correct_index == 0
Пример #18
0
def test_question_print():
    """test __str__ method
    """
    quest = exam.Question()
    quest_text = "Text"
    quest_subject = "Subject"
    quest_image = "dir/ec/tor/y"
    quest_level = 1
    iterator = iter((quest_text, quest_subject, quest_image, quest_level))
    quest.load_sequentially(iterator)

    assert f"text: {quest.text}" in quest.__str__()
    assert f"subject: {quest_subject}" in quest.__str__()
    assert f"image: {quest_image}" in quest.__str__()
    assert f"level: {quest_level}" in quest.__str__()
Пример #19
0
def test_question_add_path_parent0():
    """Test whether path is added to Answer.image
    """
    path = Path("home/my_home/file.txt")
    quest = exam.Question("question text", image=Path())
    image_path = Path("image1.png")
    answer_1 = exam.Answer()
    answer_1.image = image_path
    answer_2 = exam.Answer()
    answer_2.image = Path()
    quest.answers = (answer_1, answer_2)
    quest.add_parent_path(path)

    assert quest.image == Path()
    assert quest.answers[0].image == path.parent / image_path
    assert quest.answers[1].image == Path()
Пример #20
0
def test_question_set_correct(attribute_set, expected, attribute1_get,
                              expected1):
    """Test correct set by answer and index
    """
    q = exam.Question("Who are you?")
    q.add_answer(A1)
    q.add_answer(A2)
    q.add_answer(A3)
    q.add_answer(A4)

    try:
        setattr(q, attribute_set, expected)
    except TypeError:
        assert False

    assert getattr(q, attribute_set) == expected
    assert getattr(q, attribute1_get) == expected1
Пример #21
0
def test_question_answer_setter0():
    """Test tuple addition, overwriting
    previous addition and
    correctness
    """
    q = exam.Question("Who are you?")
    a = exam.Answer()
    q.add_answer(a)
    b = exam.Answer()
    c = exam.Answer()
    q.answers = (b, c)

    assert a not in q.answers
    assert b in q.answers
    assert c in q.answers
    assert q.correct_answer == b
    assert q.correct_index == 0
Пример #22
0
def test_question_load5(monkeypatch):
    """load a complete question and answer
    """
    class MonkeyAnswer(exam.Answer):
        def __init__(self):
            super().__init__()
            self._attr_load_sequence = ("text", )
            self._type_caster_sequence = (str, )

    tupl = ("t1", "s1", "p1", "1", "a1")
    quest = exam.Question()
    monkeypatch.setattr(quest, "_answer_type", MonkeyAnswer)
    quest.load_sequentially(iter(tupl))

    assert quest.text == tupl[0]
    assert quest.subject == tupl[1]
    assert quest.image == Path(tupl[2])
    assert quest.level == int(tupl[3])
    assert quest.answers[0].text == tupl[4]