diff options
-rw-r--r-- | tests.py | 33 | ||||
-rw-r--r-- | utils.py | 25 |
2 files changed, 46 insertions, 12 deletions
@@ -113,6 +113,11 @@ class GroupTestCase(TestCase): Group.objects.create(celcat_name="M1 CHI-TCCM (EM) s2 TPA12", source=self.source) + # Cas spécial avec un nombre supplémentaire dans le nom de groupe + Group.objects.create(celcat_name="L1 4L s1 CM4L", source=self.source) + Group.objects.create(celcat_name="L1 4L s1 TD4L1", source=self.source) + Group.objects.create(celcat_name="L1 4L s1 TP4L12", source=self.source) + def test_corresponds(self): cma = Group.objects.get(celcat_name="L1 info s2 CMA", source=self.source) @@ -178,6 +183,22 @@ class GroupTestCase(TestCase): self.assertTrue(ga111.corresponds_to(*general.group_info)) self.assertFalse(general.corresponds_to(*ga111.group_info)) + def test_corresponds_number(self): + cm4l = Group.objects.get(celcat_name="L1 4L s1 CM4L", + source=self.source) + td4l1 = Group.objects.get(celcat_name="L1 4L s1 TD4L1", + source=self.source) + tp4l12 = Group.objects.get(celcat_name="L1 4L s1 TP4L12", + source=self.source) + + self.assertFalse(cm4l.corresponds_to(*td4l1.group_info)) + self.assertFalse(cm4l.corresponds_to(*tp4l12.group_info)) + self.assertFalse(td4l1.corresponds_to(*tp4l12.group_info)) + + self.assertTrue(td4l1.corresponds_to(*cm4l.group_info)) + self.assertTrue(tp4l12.corresponds_to(*cm4l.group_info)) + self.assertTrue(tp4l12.corresponds_to(*td4l1.group_info)) + def test_correspond_parenthesis(self): general = Group.objects.get(celcat_name="M1 CHI-TCCM (EM) (toutes" " sections et semestres confondus)") @@ -246,6 +267,18 @@ class GroupTestCase(TestCase): self.assertEqual(general.group_info, ("M1 GC", None, "")) self.assertEqual(ga111.group_info, ("M1 GC", 2, "A111")) + def test_parse_number(self): + cm4l = Group.objects.get(celcat_name="L1 4L s1 CM4L", + source=self.source) + td4l1 = Group.objects.get(celcat_name="L1 4L s1 TD4L1", + source=self.source) + tp4l12 = Group.objects.get(celcat_name="L1 4L s1 TP4L12", + source=self.source) + + self.assertEqual(cm4l.group_info, ("L1 4L", 1, "4L")) + self.assertEqual(td4l1.group_info, ("L1 4L", 1, "4L1")) + self.assertEqual(tp4l12.group_info, ("L1 4L", 1, "4L12")) + def test_parse_parenthesis(self): general = Group.objects.get(celcat_name="M1 CHI-TCCM (EM) (toutes" " sections et semestres confondus)") @@ -55,19 +55,20 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$ - # ^ début de la ligne - # (.+?) correspond à au moins un caractère - # \s* éventuellement un ou plusieurs espaces - # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces - # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » - # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres - # )? groupe optionnel - # (\s+ un ou plusieurs espaces - # \([^\(\)]+\))? un ou plusieurs caractères (exceptés des espaces) entre parenthèses - # $ fin de la ligne + # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\d?\w\d{0,3}))?(\s+\([^\(\)]+\))?$ + # + # ^ début de la ligne + # (.+?) correspond à au moins un caractère + # \s* éventuellement un ou plusieurs espaces + # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces + # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » + # (\d?\w\d{0,3}) un chiffre optionnel, un caractère, entre 0 et 3 chiffres + # )? groupe optionnel + # (\s+ un ou plusieurs espaces + # \([^\(\)]+\))? un ou plusieurs caractères entre parenthèses + # $ fin de la ligne group_regex = re.compile( - r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$") + r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\d?\w\d{0,3}))?(\s+\([^\(\)]+\))?$") search = group_regex.search(name) if search is None: |