def modifica_student(self, s_id, newname): stud_to_modify = Student(s_id, "search") self.__valid_stud.valideaza_student(stud_to_modify) x = self.__repoStud.cauta(stud_to_modify) modified_stud = Student(x.get_id(), newname) self.__valid_stud.valideaza_student(modified_stud) self.__repoStud.modifica(x, modified_stud)
def __test_valid_student(self): valid_stud = ValidatorStud() valid_stud.valideaza_student(self.__student) self.__stud_id_invalid = Student(-15, "Hagi") self.__stud_nume_invalid = Student(10, "") self.__stud_invalid = Student(-1, "") with self.assertRaises(ValidError): valid_stud.valideaza_student(self.__stud_id_invalid) with self.assertRaises(ValidError): valid_stud.valideaza_student(self.__stud_nume_invalid) with self.assertRaises(ValidError): valid_stud.valideaza_student(self.__stud_invalid) self.__validStudent = valid_stud
def __test_repo_student(self): clear_file('test.txt') self.__repo = FileRepo('test.txt', Student.read_line, Student.write_line) self.assertEqual(self.__repo.size(), 0) self.__repo.adauga(self.__student) self.assertEqual(self.__repo.size(), 1) self.assertEqual(self.__repo.get_all(), [self.__student]) with self.assertRaises(RepoError): self.__repo.adauga(self.__student) x = self.__repo.cauta(self.__student) self.assertEqual(x, self.__student) self.__student_inexistent = Student(1, 'roman') with self.assertRaises(RepoError): x = self.__repo.cauta(self.__student_inexistent) self.__stud_to_modify = self.__student self.__modified_stud = self.__student self.__modified_stud.set_nume('fish') self.__repo.modifica(self.__stud_to_modify, self.__modified_stud) self.assertEqual(self.__student.get_nume(), 'fish') with self.assertRaises(RepoError): self.__repo.sterge(self.__student_inexistent) self.__repo.sterge(self.__student) self.assertEqual(self.__repo.size(), 0) self.__repo.adauga(self.__student) self.assertEqual(self.__repo.size(), 1)
def __test_repo_note(self): clear_file('test.txt') self.__repo = FileRepo('test.txt', Nota.read_line, Nota.write_line) self.assertEqual(self.__repo.size(), 0) self.__repo.adauga(self.__nota) self.assertEqual(self.__repo.size(), 1) self.assertEqual(self.__repo.get_all(), [self.__nota]) with self.assertRaises(RepoError): self.__repo.adauga(self.__nota) x = self.__repo.cauta(self.__nota) self.assertEqual(x, self.__nota) stud = Student(20, '') disci = Disciplina(20, '', '') self.__nota_inexistenta = Nota(stud, disci, 4) with self.assertRaises(RepoError): x = self.__repo.cauta(self.__nota_inexistenta) self.__nota_to_modify = self.__nota self.__modified_nota = self.__nota self.__modified_nota.set_nota(5) self.__repo.modifica(self.__nota_to_modify, self.__modified_nota) self.assertEqual(self.__nota.get_nota(), 5) with self.assertRaises(RepoError): self.__repo.sterge(self.__nota_inexistenta) self.__repo.sterge(self.__nota) assert (self.__repo.size() == 0)
def __test_creeaza_nota(self): self.__student = Student(10, 'Bogdan') self.__disciplina = Disciplina(1, 'info', 'neagu') nota = Nota(self.__student, self.__disciplina, 7) self.assertEqual(nota.get_stud(), self.__student) self.assertEqual(nota.get_disci(), self.__disciplina) self.assertEqual(nota.get_nota(), 7) self.assertEqual( str(nota), self.__student.get_nume() + ' are nota 7 la disciplina ' + self.__disciplina.get_nume()) nota2 = Nota(self.__student, self.__disciplina, 9) self.assertFalse(nota == nota2) nota.set_nota(9) self.assertEqual(nota.get_nota(), 9) self.assertTrue(nota == nota2) self.__nota = nota
def adauga_nota(self, s_id, d_id, nota): stud_aux = Student(s_id, 'search') stud = self.__repoStud.cauta(stud_aux) disci_aux = Disciplina(d_id, 'search', 'search') disci = self.__repoDisci.cauta(disci_aux) nota = Nota(stud, disci, nota) self.__valid_nota.valideaza_nota(nota) self.__repoNote.adauga(nota)
def __test_create_student(self): stud1 = Student(10, 'Bogdan') self.assertEqual(stud1.get_id(), 10) self.assertEqual(stud1.get_nume(), 'Bogdan') self.assertEqual(str(stud1), '10: Bogdan') stud1.set_nume('Marius') self.assertEqual(stud1.get_nume(), 'Marius') stud2 = Student(10, 'Alex') self.assertTrue(stud1 == stud2) self.__student = stud1
def adauga_stud_random(self, nr, min_id): last_id = min_id while nr: id = last_id + 1 last_id = id letters = string.ascii_lowercase len_name = randint(5, 16) nume = '' while len_name > 0: litera = choice(letters) nume += litera len_name = len_name - 1 stud = Student(id, nume) self.__repoStud.adauga(stud) nr = nr - 1
def get_stud_medie(self): note = self.__repoNote.get_all() situatie = {} for nota in note: if nota.get_stud().get_id() not in situatie: situatie[nota.get_stud().get_id()] = [] situatie[nota.get_stud().get_id()].append(nota.get_nota()) rez = [] for item in situatie.items(): aux_stud = Student(item[0], '') x = self.__repoStud.cauta(aux_stud) stud = StudAvgDTO(x.get_nume(), sum(item[1]) / len(item[1])) rez.append(stud) rez.sort(key=lambda x: x.get_medie(), reverse=True) nr = len(rez) * 20 / 100 nr = ceil(nr) return rez[:nr]
def get_stud_ord(self, d_id): note = self.__repoNote.get_all() situatie = {} for nota in note: if nota.get_disci().get_id() == d_id: if nota.get_stud().get_id() not in situatie: situatie[nota.get_stud().get_id()] = [] situatie[nota.get_stud().get_id()].append(nota.get_nota()) rez = [] for item in situatie.items(): aux_stud = Student(item[0], '') x = self.__repoStud.cauta(aux_stud) item[1].sort() stud = StudGradesDTO(x.get_nume(), item[1]) rez.append(stud) rez.sort(key=lambda x: x.get_nume(), reverse=False) return rez[:]
class NoteTests(unittest.TestCase): def setUp(self): unittest.TestCase.setUp(self) def tearDown(self): unittest.TestCase.tearDown(self) def __test_creeaza_nota(self): self.__student = Student(10, 'Bogdan') self.__disciplina = Disciplina(1, 'info', 'neagu') nota = Nota(self.__student, self.__disciplina, 7) self.assertEqual(nota.get_stud(), self.__student) self.assertEqual(nota.get_disci(), self.__disciplina) self.assertEqual(nota.get_nota(), 7) self.assertEqual( str(nota), self.__student.get_nume() + ' are nota 7 la disciplina ' + self.__disciplina.get_nume()) nota2 = Nota(self.__student, self.__disciplina, 9) self.assertFalse(nota == nota2) nota.set_nota(9) self.assertEqual(nota.get_nota(), 9) self.assertTrue(nota == nota2) self.__nota = nota def __test_valideaza_nota(self): valid_nota = ValidatorNota() valid_nota.valideaza_nota(self.__nota) self.__nota_invalida = Nota(self.__student, self.__disciplina, -5) with self.assertRaises(ValidError): valid_nota.valideaza_nota(self.__nota_invalida) def __test_repo_note(self): clear_file('test.txt') self.__repo = FileRepo('test.txt', Nota.read_line, Nota.write_line) self.assertEqual(self.__repo.size(), 0) self.__repo.adauga(self.__nota) self.assertEqual(self.__repo.size(), 1) self.assertEqual(self.__repo.get_all(), [self.__nota]) with self.assertRaises(RepoError): self.__repo.adauga(self.__nota) x = self.__repo.cauta(self.__nota) self.assertEqual(x, self.__nota) stud = Student(20, '') disci = Disciplina(20, '', '') self.__nota_inexistenta = Nota(stud, disci, 4) with self.assertRaises(RepoError): x = self.__repo.cauta(self.__nota_inexistenta) self.__nota_to_modify = self.__nota self.__modified_nota = self.__nota self.__modified_nota.set_nota(5) self.__repo.modifica(self.__nota_to_modify, self.__modified_nota) self.assertEqual(self.__nota.get_nota(), 5) with self.assertRaises(RepoError): self.__repo.sterge(self.__nota_inexistenta) self.__repo.sterge(self.__nota) assert (self.__repo.size() == 0) def run_note_tests(self): self.__test_creeaza_nota() self.__test_valideaza_nota() self.__test_repo_note()
def sterge_student(self, s_id): stud_to_delete = Student(s_id, 'delete') self.__valid_stud.valideaza_student(stud_to_delete) self.__repoStud.sterge(stud_to_delete)
def cauta_student(self, s_id): stud_aux = Student(s_id, 'search') self.__valid_stud.valideaza_student(stud_aux) return self.__repoStud.cauta(stud_aux)
def adauga_student(self, s_id, nume): student = Student(s_id, nume) self.__valid_stud.valideaza_student(student) self.__repoStud.adauga(student)