Ejemplo n.º 1
0
 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
Ejemplo n.º 5
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
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
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
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
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
 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))
    ]