diff --git a/.coverage b/.coverage deleted file mode 100644 index 15170c7..0000000 Binary files a/.coverage and /dev/null differ diff --git a/.gitignore b/.gitignore index 3b27143..aa8707c 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,5 @@ static/js/plugins/fullcalendar/locales-all.min.js *.bkp *.png *.drawio* -*.docx \ No newline at end of file +*.docx +*.pdf \ No newline at end of file diff --git a/jarvis/objective/models.py b/jarvis/objective/models.py index 784ae4d..a1e207a 100644 --- a/jarvis/objective/models.py +++ b/jarvis/objective/models.py @@ -598,8 +598,11 @@ class Passe(Markdownizable): """Reçoit une chaine de caratère et vérifie que si elle contient un point (.), il se trouve soit à la première position soit à la dernière position. """ - last_place = len(pattern) - 1 + if len(re.findall("\.", pattern)) > 1: + return False + if re.search("\.", pattern): + last_place = len(pattern) - 1 if pattern[0] != "." and pattern[last_place] != ".": return False diff --git a/jarvis/objective/tests.py b/jarvis/objective/tests.py index 64793a5..88fb536 100644 --- a/jarvis/objective/tests.py +++ b/jarvis/objective/tests.py @@ -1,5 +1,5 @@ from django.test import TestCase -from jarvis.objective.models import Educative, Passe +from jarvis.objective.models import Educative class EducativeTestCase(TestCase): @@ -87,52 +87,3 @@ class EducativeTestCase(TestCase): [educ_1, educ_2, educ_9], ], ) - - -class PasseTestCase(TestCase): - def setUp(self): - """ - Structure finale : - 1 -> 2 - 1 -> 6 - 3 -> 4 -> 5 -> 6 -> 7 - 1 -> 2 -> 9 - 3 -> 4 -> 5 -> 6 -> 7 -> 9 - """ - # 1 et 3 Eductative sans pre-requis - educ_1 = Educative.objects.create( - long_label="1/2 vrille", difficulty=0.1, level=1, rank=1 - ) - educ_3 = Educative.objects.create( - long_label="4 pattes", difficulty=0.1, level=1, rank=1 - ) - - def test_check_regexp(self): - label = "" - regexp = "" - educatives_list = [] - - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), False) - regexp = "Q1R1 [4-8] WC" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), False) - regexp = "Q1R1" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), True) - regexp = "Q1R1 [4-8" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), False) - regexp = "Q1R1 [4-8]" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), True) - regexp = "Q1R1 [4-]" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), True) - regexp = "Q1R1 [-8]" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), True) - regexp = "Q1R1 [8-4]" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), False) - regexp = "WC" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), False) - educ_1 = Educative.objects.get(long_label="1/2 vrille") - educatives_list.append(educ_1) - regexp = "1|" - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), True) - educ_3 = Educative.objects.get(long_label="4 pattes") - educatives_list.append(educ_3) - self.assertEqual(Passe.check_regexp(regexp, label, educatives_list), True) diff --git a/jarvis/objective/tests_models.py b/jarvis/objective/tests_models.py index 7c9fd9e..2f81db6 100644 --- a/jarvis/objective/tests_models.py +++ b/jarvis/objective/tests_models.py @@ -5,7 +5,9 @@ from jarvis.objective.models import ( TouchPosition, Routine, RoutineSkill, + Passe, ) +from jarvis.core.global_vars import ROUTINE_TYPE_CHOICE class ToolsModels(TestCase): @@ -102,3 +104,154 @@ class ToolsModels(TestCase): + " : " + routine_skill_1.skill.short_label, ) + + +class PasseTestCase(TestCase): + def setUp(self): + """ + Structure finale : + 1 -> 2 + 1 -> 6 + 3 -> 4 -> 5 -> 6 -> 7 + 1 -> 2 -> 9 + 3 -> 4 -> 5 -> 6 -> 7 -> 9 + """ + # 1 et 3 Eductative sans pre-requis + educ_1 = Educative.objects.create( + long_label="1/2 vrille", difficulty=0.1, level=1, rank=1 + ) + educ_3 = Educative.objects.create( + long_label="4 pattes", difficulty=0.1, level=1, rank=1 + ) + + def test_is_valid_dot(self): + arg = "" + self.assertEqual(Passe.is_valid_dot(arg), True) + arg = "Q1R1" + self.assertEqual(Passe.is_valid_dot(arg), True) + arg = ".Q1R1" + self.assertEqual(Passe.is_valid_dot(arg), True) + arg = "Q1R1." + self.assertEqual(Passe.is_valid_dot(arg), True) + arg = "Q1.R1" + self.assertEqual(Passe.is_valid_dot(arg), False) + arg = ".Q1.R1." + self.assertEqual(Passe.is_valid_dot(arg), False) + + def test_is_valid_subset(self): + subset = "" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[2-8]" + self.assertEqual(Passe.is_valid_subset(subset), True) + subset = "[-5]" + self.assertEqual(Passe.is_valid_subset(subset), True) + subset = "[3-]" + self.assertEqual(Passe.is_valid_subset(subset), True) + subset = "[8-2]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[-]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[1-]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[-1]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[4]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[6-6]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "4" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[6-6" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[66]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "4-8" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "6-]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[4-" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "[6" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "Q1R1 [4-8]" + self.assertEqual(Passe.is_valid_subset(subset), False) + subset = "Q1R1 [-8]" + self.assertEqual(Passe.is_valid_subset(subset), False) + + def test_is_valid_routine_type(self): + for item in ROUTINE_TYPE_CHOICE: + self.assertEqual(Passe.is_valid_routine_type(item[1]), True) + + routine_type = "" + self.assertEqual(Passe.is_valid_routine_type(routine_type), False) + routine_type = ".Q1R1" + self.assertEqual(Passe.is_valid_routine_type(routine_type), False) + routine_type = "SFS." + self.assertEqual(Passe.is_valid_routine_type(routine_type), False) + routine_type = "Q1R1 [4-8]" + self.assertEqual(Passe.is_valid_routine_type(routine_type), False) + routine_type = "SFS [-8]" + self.assertEqual(Passe.is_valid_routine_type(routine_type), False) + + def test_is_valid_regexp_one_arg(self): + arg = "" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), False) + arg = "WC" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), True) + arg = "1|" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), True) + arg = ".Q1R1" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), True) + arg = "Q1R2." + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), True) + arg = ".Q1R1 [4-8" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), False) + arg = "Q1R2. [4-8" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), False) + arg = "Q1R1 [4-8]" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), False) + arg = "Q1R1 [8-4]" + self.assertEqual(Passe.is_valid_regexp_one_arg(arg), False) + + def test_is_valid_regexp_two_args(self): + arg1 = "" + arg2 = "" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), False) + arg1 = "Q1R1" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), False) + arg2 = "[4-8]" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), True) + arg2 = "[8-8]" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), False) + arg2 = "[8-4]" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), False) + arg2 = "[-8]" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), True) + arg2 = "[4-]" + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), True) + arg1 = "Q1R1." + self.assertEqual(Passe.is_valid_regexp_two_args(arg1, arg2), True) + + def test_is_valid_regexp(self): + regexp = "" + self.assertEqual(Passe.is_valid_regexp(regexp), False) + regexp = "Q1R1 [4-8]" + self.assertEqual(Passe.is_valid_regexp(regexp), True) + regexp = "Q1R1 [8-8]" + self.assertEqual(Passe.is_valid_regexp(regexp), False) + regexp = "Q1R1 [8-4]" + self.assertEqual(Passe.is_valid_regexp(regexp), False) + regexp = "Q1R1 [-8]" + self.assertEqual(Passe.is_valid_regexp(regexp), True) + regexp = "Q1R1 [4-]" + self.assertEqual(Passe.is_valid_regexp(regexp), True) + regexp = "Q1R1. [4-8]" + self.assertEqual(Passe.is_valid_regexp(regexp), True) + regexp = "Q1R1. [4-]" + self.assertEqual(Passe.is_valid_regexp(regexp), True) + regexp = ".Q1R1 [-8]" + self.assertEqual(Passe.is_valid_regexp(regexp), True) + regexp = "Q1R1. [8-8]" + self.assertEqual(Passe.is_valid_regexp(regexp), False) + regexp = ".Q1R1 [8-4]" + self.assertEqual(Passe.is_valid_regexp(regexp), False)