Add tests for Passe model (regexp validation)

This commit is contained in:
Gregory Trullemans 2024-03-10 16:19:48 +01:00
parent cb410dd7c2
commit fabe678312
5 changed files with 160 additions and 52 deletions

BIN
.coverage

Binary file not shown.

1
.gitignore vendored
View File

@ -47,3 +47,4 @@ static/js/plugins/fullcalendar/locales-all.min.js
*.png *.png
*.drawio* *.drawio*
*.docx *.docx
*.pdf

View File

@ -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 """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. 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): if re.search("\.", pattern):
last_place = len(pattern) - 1
if pattern[0] != "." and pattern[last_place] != ".": if pattern[0] != "." and pattern[last_place] != ".":
return False return False

View File

@ -1,5 +1,5 @@
from django.test import TestCase from django.test import TestCase
from jarvis.objective.models import Educative, Passe from jarvis.objective.models import Educative
class EducativeTestCase(TestCase): class EducativeTestCase(TestCase):
@ -87,52 +87,3 @@ class EducativeTestCase(TestCase):
[educ_1, educ_2, educ_9], [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)

View File

@ -5,7 +5,9 @@ from jarvis.objective.models import (
TouchPosition, TouchPosition,
Routine, Routine,
RoutineSkill, RoutineSkill,
Passe,
) )
from jarvis.core.global_vars import ROUTINE_TYPE_CHOICE
class ToolsModels(TestCase): class ToolsModels(TestCase):
@ -102,3 +104,154 @@ class ToolsModels(TestCase):
+ " : " + " : "
+ routine_skill_1.skill.short_label, + 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)