ISSUE 9 : Vérifier les contraintes sur l'association (bidirectionnelle) Calendar <-> Agent
Résolution de l'ISSUE 9
Cette issue s'est résolu de manière similaire aux autres implémentation d'associations bidirectionnelles. On passe par une classe ReferenceTo. Comme les nom des autres ReferenceTo devenaient problématique pour comprendre leurs rôles, tout leurs noms ont été changé en fonction.
NB: voir le ticket #11 (closed)
Les classes ReferenceTo:
Ici, on ajoutera les classes ReferenceCalendarToAgent
implémentant un SingleReference<Agent>
pour modéliser l'association de Calendar vers Agent et ReferenceAgentToCalendar
implémentant aussi un SingleReference<Calendar>
pour modéliser l'association de Agent vers Calendar. Dans les deux cas, on choisira SingleReference
car on n'associe qu'un unique calendrier à un unique agent.
Comme pour les associations précédentes, on changera les attributs suivant:
- Attribut detype Calendar au sein de la classe Agent par ReferenceAgentToCalendar
- Attribut de type Agent au sein de la classe Calendar par ReferenceCalendarToAgent
Les Tests:
Pour vérifier que l'association se déroule correctement, j'ai ajoutée des tests post-implémentation pour corriger d'éventuelles erreurs (ex: StackOverflow, NullPointerException ...). Pour vérifier depuis Agent, j'ai ajoutée une classe de tests supplémentaires AgentTest
.
CalendarTest
J'ai ajoutée au sein de CalendarTest
deux tests supplémentaires:
- checkAssociationWhenUsingConstructor(): Ce test vérifie que l'association se fait correctement lors de la construction d'un objet Calendrier
- checkAssociationWhenUsingSetters(): Ce test verifie que lorsqu'on change d'Agent par les setters, l'attribut agent au sein de ReferenceTo est bien modifié.
AgentTest
J'ai ajoutée au sein de AgentTest
deux tests en rapport avec les associations:
- checkAssociationWhenSettingCalendarForTheFirstTime(): On vérifie lorsqu'on ajoute un premier calendrier que l'association se fait bien une première fois.
- checkAssociationWhenChangingCalendar(): On vérifie que l'association est bien modifié lors d'un changement de calendrier.