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)
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
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
def test_question_get(attribute, expected): """Test default attribute values """ text = "What's your name?" q = exam.Question(text) assert getattr(q, attribute) == expected
def test_question_init0(): """Test default arguments """ q = exam.Question() expected = "" assert q.text == expected
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
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
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
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
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
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
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
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 == ()
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 == ()
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 == ()
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 == ()
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
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__()
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()
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
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
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]