Esempio n. 1
0
def create_exam():
    if get_user_continue("Would you like to create an exam?") == False:
        return
    #else
    saved = False
    exam = Exam(get_user_input("name"))
    while True:
        print("1.) Add Problems")
        print("2.) View Exam")
        print("3.) Save Exam")
        print("99.) Exit")
        u_choice = input("Enter your choice: ")
        if u_choice == "1":
            while get_user_continue("Would you like to add a problem?"):
                problem = create_problem()
                points = int(get_user_input("Point Value"))
                exam.add_problem(problem, points)
            saved = False
        elif u_choice == "2":
            print(exam.as_string())
        elif u_choice == "3":
            exam.save(get_user_input("filename"))
            saved = True
        elif u_choice == "99":
            if not (saved) and get_user_continue(
                    "Would you like to save your changes?"):
                continue
            else:
                return
Esempio n. 2
0
class ExamTest(unittest.TestCase):
    def setUp(self):
        self.name = "Exam"
        self.exam = Exam(self.name)
        self.exam.test_fill_quotes()
        #self.exam.save("setup")
        self.problemA = Problem("Question A", "Answer A")
        self.problemB = Problem("Question B", "Answer B")
        self.problemC = Problem("Question C", "Answer C")

    def tearDown(self):
        del self.exam
        del self.problemA
        del self.problemB
        del self.problemC

    def test_get_name(self):
        self.assertEqual(self.name, self.exam.get_name())

    def test_set_name(self):
        self.exam.set_name("MyExam")
        self.assertEqual("MyExam", self.exam.get_name())

    def test_find_problem(self):
        self.assertEqual(self.exam.find_problem(self.problemA), -1)
        self.exam.add_problem(self.problemA, 1)
        self.exam.add_problem(self.problemB, 1)
        self.exam.add_problem(self.problemC, 1)
        indA = self.exam.find_problem(self.problemA)
        indB = self.exam.find_problem(self.problemB)
        indC = self.exam.find_problem(self.problemC)
        self.assertEqual(
            self.exam.get_problem(indA).as_string(), self.problemA.as_string())
        self.assertEqual(
            self.exam.get_problem(indB).as_string(), self.problemB.as_string())
        self.assertEqual(
            self.exam.get_problem(indC).as_string(), self.problemC.as_string())

    def test_remove_problem(self):
        self.assertEqual(self.exam.remove_problem(self.problemA), -1)

        p = self.exam.get_problem(0)
        self.assertEqual(self.exam.remove_problem(p), 0)
        self.assertEqual(self.exam.find_problem(p), -1)

    def test_replace_problem(self):
        p = self.exam.get_problem(0)
        self.assertTrue(self.exam.check_index(0))
        self.assertEqual(self.exam.replace_problem(0, self.problemA, 1), 0)
        self.assertEqual(self.exam.find_problem(p), -1)
        self.assertEqual(self.exam.find_problem(self.problemA), 0)

    def test_insert_problem(self):
        p = self.exam.get_problem(5)
        self.exam.insert_problem(5, self.problemA, 1)
        self.assertEqual(self.exam.get_problem(5), self.problemA)
        self.assertEqual(self.exam.get_problem(6), p)

    def test_swap_problem(self):
        self.assertEqual(self.exam.swap_problem(-1, 1), -1)
        self.assertEqual(self.exam.swap_problem(0, 0), -1)
        self.assertEqual(self.exam.swap_problem(1, -1), -1)

        p0 = self.exam.get_problem(0)  #problem in position zero orginally
        p1 = self.exam.get_problem(1)  #problem in position one  orginally
        self.assertEqual(self.exam.swap_problem(0, 1), 0)
        self.assertEqual(self.exam.get_problem(0), p1)  #p1 should be in pos 0
        self.assertEqual(self.exam.get_problem(1), p0)  #p0 should be in pos 1

    def test_move_problem(self):
        #dst > org
        ind_org = 0
        ind_dst = 5
        prob_org = self.exam.get_problem(ind_org)
        prob_dst = self.exam.get_problem(ind_dst)
        self.assertEqual(self.exam.move_problem(ind_org, ind_dst), 0)
        self.assertEqual(self.exam.get_problem(ind_dst), prob_org)
        self.assertEqual(self.exam.get_problem(ind_dst - 1), prob_dst)

        #dst < org
        ind_org = 5
        ind_dst = 1
        prob_org = self.exam.get_problem(ind_org)
        prob_dst = self.exam.get_problem(ind_dst)
        self.assertEqual(self.exam.move_problem(ind_org, ind_dst), 0)
        self.assertEqual(self.exam.get_problem(ind_dst), prob_org)
        self.assertEqual(self.exam.get_problem(ind_dst + 1), prob_dst)

    def test_pop_problem(self):
        exam_length = self.exam.get_length()
        last_problem = self.exam.get_problem(exam_length - 1)
        self.exam.pop_problem()
        self.assertEqual(self.exam.find_problem(last_problem), -1)
        self.assertEqual(self.exam.get_length(), exam_length - 1)

    def test_copy(self):
        exam_copy = self.exam.copy()
        self.assertFalse(exam_copy == self.exam)
        self.assertEqual(exam_copy.as_string(), self.exam.as_string())

    def test_check_index(self):
        self.assertFalse(self.exam.check_index(-1))
        self.assertFalse(self.exam.check_index(self.exam.get_length()))
        self.assertTrue(self.exam.check_index(0))
        self.assertTrue(self.exam.check_index(self.exam.get_length() - 1))

    def test_as_string(self):
        ex = Exam("Exam", [1, 1, 1],
                  ProblemSet("", self.problemA, self.problemB, self.problemC))
        points = ' '.join([str(i) for i in ex.get_points()])
        comp_str = "Exam" + "\n" + points + '\n' + self.problemA.as_string(
        ) + "\n"
        comp_str += self.problemB.as_string() + "\n" + self.problemC.as_string(
        ) + "\n"
        self.assertEqual(ex.as_string(), comp_str)

    def test_save_load(self):
        self.exam.save("deleteme")
        load_set = Exam()
        load_set.load("deleteme")
        self.assertEqual(self.exam.as_string(), load_set.as_string())

    def test_consolidate(self):
        test = Exam()
        #test is easy if we eliminate the name otherwise we have to do a lot of str manip
        self.exam.set_name("")
        test.consolidate(self.exam, self.exam, self.exam)
        test_string = '\n' + ' '.join(
            [str(i) for i in (self.exam.get_points() * 3)])
        test_string += super(Exam, self.exam).as_string().rstrip() * 3 + '\n'
        self.assertEqual(test.as_string(), test_string)

    def test_txt(self):
        #self.exam.as_text_file("tester")
        pass
Esempio n. 3
0
def modify_exam():
    filename = get_user_input("Filename where Exam is stored: ")
    ex = Exam()
    ex.load(filename)
    saved = True

    while True:
        print(" 1.) View Exam")
        print(" 2.) Delete Problem")
        print(" 3.) Move Problem")
        print(" 4.) Add New Problem")
        print(" 5.) Insert New Problem")
        print(" 6.) Save Exam")
        #print(" 6.) Consolidate with Existing Problem Set")
        print("98.) Help")
        print("99.) Exit")
        choice = input("Enter your choice: ")
        if choice == '1':
            print(ex.as_string())

        elif choice == '2':
            while get_user_continue("Would you like to remove a problem?"):
                ex.remove_index(int(get_user_input("Problem Number: ")))
            saved = False

        elif choice == '3':
            while get_user_continue("Would you like to move a problem?"):
                org = int(get_user_input("Origin Index: "))
                dst = int(get_user_input("Destination Index: "))
                ex.move_problem(org, dst)
            saved = False

        elif choice == '4':
            while get_user_continue("Would you like to add a problem?"):
                prob = create_problem()
                point = get_user_input("Point Value: ")
                ex.add_problem(prob, point)
            saved = False

        elif choice == '5':
            while get_user_continue("Would you like to insert a problem?"):
                prob = create_problem()
                point = get_user_input("Point Value: ")
                ind = int(
                    get_user_input("where would like to insert this problem?"))
                ex.insert_problem(ind, prob, point)
            saved = False

        elif choice == "6":
            ex.save(get_user_input("filename"))
            saved = True

        #elif choice == '6':
        #print("I have no purpose")

        elif choice == '98':
            print("I can't help ya bucko.")

        elif choice == "99":
            if not (saved) and get_user_continue(
                    "Would you like to save your changes?"):
                continue
            else:
                return
        else:
            print("Unrecognized Input")