def testAddMark(self): self.mrk_repo.addMark( Mark(Student("Ceva", 22, 9), LabProblem("05_07", "dada", 6), 2)) self.assertTrue(self.mrk_repo.getNumberOfMarks() == 4) self.mrk_repo.addMark( Mark(Student("Ceva", 22, 7), LabProblem("08_07", "dada", 6), 6)) self.assertTrue(self.mrk_repo.getNumberOfMarks() == 5)
def test_validateProblemNumber(): pb1 = LabProblem("01_02", "ceva", 2) pb2 = LabProblem("00_33", "ceva2", 4) pb3 = LabProblem("22_04", "ceva3") pb_repo = LabProblemInMemoryRepository() pb_repo.addProblem(pb1) pb_repo.addProblem(pb2) pb_repo.addProblem(pb3) val = LabProblemValidator() try: pb_num = "01_15" val.validateProblemNumber(pb_num, pb_repo) assert False except ValueError: assert True try: pb_num = "" val.validateProblemNumber(pb_num, pb_repo) assert False except ValueError: assert True try: pb_num = 12 val.validateProblemNumber(pb_num, pb_repo) assert False except ValueError: assert True
def test_validateMarkInRepo(): val = MarkValidator() st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) pb3 = LabProblem("06_11", "dada", 2) mrk_repo = MarkInMemoryRepository() mrk1 = Mark(st1, pb1, 10) mrk_repo.addMark(mrk1) mrk2 = Mark(st1, pb2, 6) mrk_repo.addMark(mrk2) mrk3 = Mark(st2, pb2, 9) mrk_repo.addMark(mrk3) mrk = Mark(st1, pb1, 6) try: val.validateMarkInRepo(mrk, mrk_repo) assert False except ValueError: assert True mrk = Mark(st1, pb3, 10) try: val.validateMarkInRepo(mrk, mrk_repo) assert False except ValueError: assert True
def test_validateMark(): val = MarkValidator() st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) mrk = Mark(st1, pb1, 11) try: val.validateMark(mrk) assert False except ValueError: assert True mrk = Mark(st2, pb2, 6.5) try: val.validateMark(mrk) assert False except ValueError: assert True mrk = Mark(st2, pb2, "10") try: val.validateMark(mrk) assert False except ValueError: assert True
def test_getMark(): val = MarkValidator() mrk_repo = MarkInMemoryRepository() st_repo = StudentInMemoryRepository() pb_repo = LabProblemInMemoryRepository() st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) st_repo.addStudent(st1) st_repo.addStudent(st2) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) pb3 = LabProblem("01_02", "ma rog", 2) pb_repo.addProblem(pb1) pb_repo.addProblem(pb2) pb_repo.addProblem(pb3) mark_service = MarkService(mrk_repo, st_repo, pb_repo, val) mark_service.addMark(0, "01_01", 10) mark_service.addMark(0, "06_10", 6) mark_service.addMark(1, "01_01", 8) assert mark_service.getMark(0, "01_01").getMark() == 10 assert mark_service.getMark(1, "01_01").getStudent() == st2 try: mark_service.getMark(1, "06_10") assert False except ValueError: assert True
def test_getStudentWithMostProblemsMarkOver(): st_repo = StudentInMemoryRepository() pb_repo = LabProblemInMemoryRepository() mrk_repo = MarkInMemoryRepository() pb_val = LabProblemValidator() statistics_service = StatisticsService(st_repo, pb_repo, mrk_repo, pb_val) st_repo.addStudent(Student("Ana", 21, 0)) st_repo.addStudent(Student("Ion", 22, 1)) st_repo.addStudent(Student("Mircea", 21, 2)) st_repo.addStudent(Student("Ionel", 56, 3)) pb_repo.addProblem(LabProblem("01_01", "ceva", 3)) pb_repo.addProblem(LabProblem("03_01", "altceva", 6)) pb_repo.addProblem(LabProblem("03_05", "mama", 2)) pb_repo.addProblem(LabProblem("16_01", "dada", 10)) mrk_repo.addMark( Mark(Student("Ana", 21, 0), LabProblem("01_01", "ceva", 3), 8)) mrk_repo.addMark( Mark(Student("Ion", 22, 1), LabProblem("01_01", "ceva", 3), 5)) mrk_repo.addMark( Mark(Student("Ana", 21, 0), LabProblem("16_01", "dada", 10), 8)) mrk_repo.addMark( Mark(Student("Ion", 22, 1), LabProblem("16_01", "dada", 10), 3)) mrk_repo.addMark( Mark(Student("Mircea", 21, 2), LabProblem("01_01", "ceva", 3), 4)) mrk_repo.addMark( Mark(Student("Ionel", 56, 3), LabProblem("03_01", "altceva", 6), 5)) expected = StudentProblemsDTO(0, "Ana", 2) assert statistics_service.getStudentWithMostProblemsMarkOver(5) == expected expected = None assert statistics_service.getStudentWithMostProblemsMarkOver(9) == expected
def test_updateMark(): st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) mrk_repo = MarkInMemoryRepository() mrk1 = Mark(st1, pb1, 10) mrk_repo.addMark(mrk1) mrk2 = Mark(st1, pb2, 6) mrk_repo.addMark(mrk2) mrk3 = Mark(st2, pb2, 9) mrk_repo.addMark(mrk3) mrk_new = Mark(st1, pb1, 7) mrk_repo.updateMark(mrk_new) assert mrk_repo.getMarkById(mrk_new.getId()).getMark() == 7 mrk_new = Mark(st2, pb2, 9) mrk_repo.updateMark(mrk_new) assert mrk_repo.getMarkById(mrk_new.getId()).getMark() == 9 mrk_new = Mark(st1, pb2, 8) mrk_repo.updateMark(mrk_new) assert mrk_repo.getMarkById(mrk_new.getId()).getMark() == 8 mrk_new = Mark(st1, pb1, 5) mrk_repo.updateMark(mrk_new) assert mrk_repo.getMarkById(mrk_new.getId()).getMark() == 5
def setUp(self): self.st1 = Student("ana", 211, 1) self.st2 = Student("mircea", 212, 2) self.pb1 = LabProblem("21_01", "ceva", 3) self.pb2 = LabProblem("01_02", "altceva", 2) self.mark1 = Mark(self.st1, self.pb1, 10) self.mark2 = Mark(self.st2, self.pb1, 5) self.mark3 = Mark(self.st2, self.pb2, 8)
def testUpdateMark(self): mrk_new = Mark(Student("Ana", 21, 0), LabProblem("01_01", "fa ceva", 3), 7) self.mrk_repo.updateMark(mrk_new) self.assertTrue( self.mrk_repo.getMarkById(mrk_new.getId()).getMark() == 7) mrk_new = Mark(Student("Ion", 14, 1), LabProblem("06_10", "altceva", 5), 9) self.mrk_repo.updateMark(mrk_new) self.assertTrue( self.mrk_repo.getMarkById(mrk_new.getId()).getMark() == 9)
def test_getId(): st1 = Student("ana", 211, 1) st2 = Student("mircea", 212, 2) pb1 = LabProblem("21_01", "ceva", 3) pb2 = LabProblem("01_02", "altceva", 2) mark1 = Mark(st1, pb1, 10) mark2 = Mark(st2, pb1, 5) mark3 = Mark(st2, pb2, 8) assert mark1.getId() == "1_21_01" assert mark2.getId() == "2_21_01" assert mark3.getId() == "2_01_02"
def test_addProblem(): pb1 = LabProblem("01_02", "ceva", 2) pb2 = LabProblem("00_33", "ceva2", 4) pb3 = LabProblem("22_04", "ceva3") pb_repo = LabProblemInMemoryRepository() pb_repo.addProblem(pb1) assert pb_repo.getNumberOfProblems() == 1 pb_repo.addProblem(pb2) assert pb_repo.getNumberOfProblems() == 2 pb_repo.addProblem(pb3) assert pb_repo.getNumberOfProblems() == 3
def test_getProblemByNumber(): pb1 = LabProblem("01_02", "ceva", 2) pb2 = LabProblem("00_33", "ceva2", 4) pb3 = LabProblem("22_04", "ceva3") pb_repo = LabProblemInMemoryRepository() pb_repo.addProblem(pb1) pb_repo.addProblem(pb2) pb_repo.addProblem(pb3) pb4 = pb_repo.getProblemByNumber("01_02") assert pb4 == pb1 pb4 = pb_repo.getProblemByNumber(pb2.getNumber()) assert pb4 == pb2
def setUp(self): st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) self.mrk_repo = MarkInMemoryRepository() self.mrk1 = Mark(st1, pb1, 10) self.mrk_repo.addMark(self.mrk1) self.mrk2 = Mark(st1, pb2, 6) self.mrk_repo.addMark(self.mrk2) self.mrk3 = Mark(st2, pb2, 9) self.mrk_repo.addMark(self.mrk3)
def test_getMarkById(): st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) mrk_repo = MarkInMemoryRepository() mrk1 = Mark(st1, pb1, 10) mrk_repo.addMark(mrk1) mrk2 = Mark(st1, pb2, 6) mrk_repo.addMark(mrk2) mrk3 = Mark(st2, pb2, 9) mrk_repo.addMark(mrk3) assert mrk_repo.getMarkById(mrk1.getId()).getMark() == 10 assert mrk_repo.getMarkById(mrk2.getId()).getStudent() == st1
def test_addMark(): st1 = Student("Ana", 21, 0) st2 = Student("Ion", 14, 1) pb1 = LabProblem("01_01", "fa ceva", 3) pb2 = LabProblem("06_10", "altceva", 5) mrk_repo = MarkInMemoryRepository() mrk = Mark(st1, pb1, 10) mrk_repo.addMark(mrk) assert mrk_repo.getNumberOfMarks() == 1 mrk = Mark(st1, pb2, 6) mrk_repo.addMark(mrk) assert mrk_repo.getNumberOfMarks() == 2 mrk = Mark(st2, pb2, 9) mrk_repo.addMark(mrk) assert mrk_repo.getNumberOfMarks() == 3
def __loadFromFile(self): with open(self.__f_name) as file: for line in file: try: num_problem, description, deadline = line.split(";") deadline = int(deadline) problem = LabProblem(num_problem, description, deadline) LabProblemInMemoryRepository.addProblem(self, problem) except ValueError: pass with open(self.__f_name, "a") as file: file.write("\n")
def test_getStudentsForProblem(): st_repo = StudentInMemoryRepository() pb_repo = LabProblemInMemoryRepository() mrk_repo = MarkInMemoryRepository() pb_val = LabProblemValidator() statistics_service = StatisticsService(st_repo, pb_repo, mrk_repo, pb_val) st_repo.addStudent(Student("Ana", 21, 0)) st_repo.addStudent(Student("Ion", 22, 1)) st_repo.addStudent(Student("Mircea", 21, 2)) st_repo.addStudent(Student("Pas", 56, 3)) pb_repo.addProblem(LabProblem("01_01", "ceva", 3)) pb_repo.addProblem(LabProblem("03_01", "altceva", 6)) pb_repo.addProblem(LabProblem("03_05", "mama", 2)) pb_repo.addProblem(LabProblem("16_01", "dada", 10)) mrk_repo.addMark( Mark(Student("Ana", 21, 0), LabProblem("01_01", "ceva", 3), 8)) mrk_repo.addMark( Mark(Student("Ion", 22, 1), LabProblem("01_01", "ceva", 3), 5)) mrk_repo.addMark( Mark(Student("Ana", 21, 0), LabProblem("16_01", "dada", 10), 9)) mrk_repo.addMark( Mark(Student("Ion", 22, 1), LabProblem("16_01", "dada", 10), 3)) mrk_repo.addMark( Mark(Student("Mircea", 21, 2), LabProblem("01_01", "ceva", 3), 4)) mrk_repo.addMark( Mark(Student("Ionel", 56, 3), LabProblem("03_01", "altceva", 6), 5)) assert statistics_service.getStudentsForProblemRecursive("01_01") == [ StudentMarkDTO(mrk_repo.getMarkById("0_01_01")), StudentMarkDTO(mrk_repo.getMarkById("1_01_01")), StudentMarkDTO(mrk_repo.getMarkById("2_01_01")) ] try: statistics_service.getStudentsForProblemRecursive("02_04") assert False except ValueError: assert True
def addProblem(self, lab_number, description, deadline): ''' Adds a problem to the repository IN: lab_number - 2 digit max natural number description - string deadline - natural number, number of weeks ''' problem_number = self.availableProblemNumber(lab_number) pb = LabProblem(problem_number, description, deadline) self.__val.validateProblem(pb) self.__problems.addProblem(pb) return "The problem was added...\n"
def test_updateProblem(): pb1 = LabProblem("01_02", "ceva", 2) pb2 = LabProblem("00_33", "ceva2", 4) pb3 = LabProblem("22_04", "ceva3") pb_repo = LabProblemInMemoryRepository() pb_repo.addProblem(pb1) pb_repo.addProblem(pb2) pb_repo.addProblem(pb3) new_pb = LabProblem("01_02", "altceva", 1) pb_repo.updateProblem(new_pb) assert pb_repo.getProblemByNumber("01_02").getDescription() == "altceva" assert pb_repo.getProblemByNumber("01_02").getDeadline() == 1 new_pb = LabProblem(pb2.getNumber(), pb3.getDescription()) pb_repo.updateProblem(new_pb) assert pb_repo.getProblemByNumber("00_33").getDescription() == "ceva3" assert pb_repo.getProblemByNumber("00_33").getDeadline() == 3
def updateProblem(self, problem_number, description, deadline): ''' Updates the information of a specified problem in the repository IN: problem_number - string, with the format labNo_problemNo description - string deadline - natural number ''' self.__val.validateProblemNumber(problem_number, self.__problems) pb = LabProblem(problem_number, description, deadline) self.__val.validateProblem(pb) self.__updateMarkForProblem(pb, problem_number) self.__problems.updateProblem(pb) return "The problem was updated...\n"
def __removeMarksForStudent(self, st_id): ''' Removes all the marks for the student with st_id IN: st_id - integer ''' for mark_key in self.__catalog.getAllMarks(): stud_id, lab_id, pb_id = mark_key.split("_") if int(stud_id) == st_id: problem_number = lab_id + "_" + pb_id st = self.getStudentById(st_id) pb = LabProblem(problem_number, "", 0) mrk = Mark(st, pb, 0) self.__catalog.removeMark(mrk.getId())
def __getListOfStudentsNotPassing(self, students_dict, marks_dict): ''' Recursive method that returns a list of studentMarksDTOs with all the students that have an average bellow 5 IN: students_dict - dictionary with students marks_dict - dictionary with marks ''' auxiliary_list = [] student_key = list(students_dict.keys())[0] average_mark, num_of_marks = self.__getAverageForStudent( student_key, dict(marks_dict), 0, 0) if num_of_marks > 0 and average_mark / num_of_marks < 5: mrk = Mark(students_dict[student_key], LabProblem("", "", 0), average_mark / num_of_marks) auxiliary_list.append(StudentMarkDTO(mrk)) if len(students_dict) > 1: students_dict.pop(student_key) auxiliary_list += self.__getListOfStudentsNotPassing( students_dict, marks_dict) return auxiliary_list
def getStudentsWithMarksUnder5Iterative(self): ''' Returns all the students and their marks with the average of the marks lower than 5 ''' students_not_passing = [] for st_id in self.__students.getAllStudents(): average_mark = 0 num_of_marks = 0 for mark_key in self.__marks.getAllMarks(): new_st_id, lab_num, pb_num = self.__marks.getMarkById( mark_key).getId().split("_") if int(new_st_id) == st_id: average_mark += self.__marks.getMarkById( mark_key).getMark() num_of_marks += 1 if num_of_marks > 0 and average_mark / num_of_marks < 5: mrk = Mark(self.__students.getStudentById(st_id), LabProblem("", "", 0), average_mark / num_of_marks) students_not_passing.append(StudentMarkDTO(mrk)) sortAlg = SortingAlgorithms() sortAlg.shellSort(students_not_passing) return students_not_passing
class TestCaseLabProblemClass(unittest.TestCase): def setUp(self): self.pb1 = LabProblem("02_21", "ceva", 4) self.pb2 = LabProblem("14_02", "altceva") def testGetNumber(self): self.assertTrue(self.pb1.getNumber() == "02_21") self.assertTrue(self.pb2.getNumber() == "14_02") def testGetDeadline(self): self.assertEqual(self.pb1.getDeadline(), 4) self.assertEqual(self.pb2.getDeadline(), 3) def testGetDescription(self): self.assertEqual(self.pb1.getDescription(), "ceva") self.assertEqual(self.pb2.getDescription(), "altceva") def testGetAvailability(self): self.assertEqual(self.pb1.getAvailability(), False) self.assertEqual(self.pb2.getAvailability(), False) self.pb2.setNotAvailable() self.assertEqual(self.pb2.getAvailability(), True) def testGetProblemNumber(self): self.assertEqual(self.pb1.getProblemNumber(), 21) self.assertEqual(self.pb2.getProblemNumber(), 2) def testGetLabNumber(self): self.assertEqual(self.pb1.getLabNumber(), 2) self.assertEqual(self.pb2.getLabNumber(), 14)
def setUp(self): self.pb1 = LabProblem("02_21", "ceva", 4) self.pb2 = LabProblem("14_02", "altceva")
def test_validateProblem(): val = LabProblemValidator() try: pb1 = LabProblem("02_21", "ceva", 2) pb2 = LabProblem("14_05", "", 5) val.validateProblem(pb1) assert True val.validateProblem(pb2) assert False except ValueError: assert True try: pb1 = LabProblem("22_01", "ceva", "one") val.validateProblem(pb1) assert False except ValueError: assert True try: pb1 = LabProblem("22_02", "altceva", -2) val.validateProblem(pb1) assert False except ValueError: assert True try: pb1 = LabProblem("03_03", "dada") val.validateProblem(pb1) assert True except ValueError: assert False try: pb2 = LabProblem("0a_05", "daa", 2) val.validateProblem(pb2) assert False except ValueError: assert True try: pb2 = LabProblem("1_22", "nun") val.validateProblem(pb2) assert False except ValueError: assert True try: pb1 = LabProblem("22_3", "dada", 10) val.validateProblem(pb1) assert False except ValueError: assert True try: pb2 = LabProblem(22, "nun", 2) val.validateProblem(pb1) assert False except ValueError: assert True
def test_getStudentsWithMarksUnder5(): st_repo = StudentInMemoryRepository() pb_repo = LabProblemInMemoryRepository() mrk_repo = MarkInMemoryRepository() pb_val = LabProblemValidator() statistics_service = StatisticsService(st_repo, pb_repo, mrk_repo, pb_val) st_repo.addStudent(Student("Ana", 21, 0)) st_repo.addStudent(Student("Ion", 22, 1)) st_repo.addStudent(Student("Mircea", 21, 2)) st_repo.addStudent(Student("Pas", 56, 3)) pb_repo.addProblem(LabProblem("01_01", "ceva", 3)) pb_repo.addProblem(LabProblem("03_01", "altceva", 6)) pb_repo.addProblem(LabProblem("03_05", "mama", 2)) pb_repo.addProblem(LabProblem("16_01", "dada", 10)) mrk_repo.addMark( Mark(Student("Ana", 21, 0), LabProblem("01_01", "ceva", 3), 8)) mrk_repo.addMark( Mark(Student("Ion", 22, 1), LabProblem("01_01", "ceva", 3), 5)) mrk_repo.addMark( Mark(Student("Ana", 21, 0), LabProblem("16_01", "dada", 10), 9)) mrk_repo.addMark( Mark(Student("Ion", 22, 1), LabProblem("16_01", "dada", 10), 3)) mrk_repo.addMark( Mark(Student("Mircea", 21, 2), LabProblem("01_01", "ceva", 3), 4)) mrk_repo.addMark( Mark(Student("Ionel", 56, 3), LabProblem("03_01", "altceva", 6), 5)) assert statistics_service.getStudentsWithMarksUnder5Recursive() == [ StudentMarkDTO( Mark(st_repo.getStudentById(1), LabProblem("", "", 0), 4.0)), StudentMarkDTO( Mark(st_repo.getStudentById(2), LabProblem("", "", 0), 4.0)) ]