Module ldc.partie1
Toutes les méthodes permettant de travailler sur les listes doublement chainées
Expand source code
#!/usr/bin/python3
#-*- coding: utf8 -*-
# @author : Sébastien LOZANO
"""
Toutes les méthodes permettant de travailler sur les listes doublement chainées
"""
pass
# Pour mesurer le temps de traitement du script
from datetime import datetime
# Pour les commandes systeme
import os
from typing import NoReturn
from tools import *
#############################################################################################
# DEFINITIONS
#############################################################################################
def creerListeVide():
"""Crée une liste vide."""
pass
## la liste vide vaut None
return None
def creerNoeudLDC(val:int,precedent:list,suivant:list)->list:
"""Crée un Noeud.
Un noeud est une liste Python de trois cases **[valeur, noeud precedent, noeud suivant]**
**Paramètres**
* val -- la valeur du noeud.
* precedent -- le noeud précédent. None en début de liste.
* suivant -- le noeud suivant. None en fin de liste.
**Sorties**
* Une liste de trois éléments [val,precedent,suivant].
"""
pass
assert isinstance(val,int),warnString(str(val)+" devrait être un entier")
assert isinstance(precedent,list) or precedent==None,warnString(str(precedent)+" devrait être une liste ou None")
assert isinstance(suivant,list) or suivant==None,warnString(str(suivant)+" devrait être une liste ou None")
return [val,precedent,suivant]
def estNoeudLDC_Droite(n:list)->bool:
"""Vérifie que **n** est un noeud de liste doublement chainée et que tous les éléments à droite de **n** le sont aussi.
**Paramètres**
* n -- noeud de liste doublement chainée.
**Sorties**
* Un booléen
"""
pass
assert (n==None) or (isinstance(n,list) and len(n)==3 and isinstance(n[0],int) and estNoeudLDC_Droite(n[1])),warnString(str(n)+" devrait être None ou une liste de 3 éléments [entier, noeudLDC ou None, noeudLDC ou None]")
return True
def estNoeudLDC_Gauche(n:list)->bool:
"""Vérifie que **n** est un noeud de liste doublement chainée et que tous les éléments à gauche de **n** le sont aussi.
**Paramètres**
* n -- noeud de liste doublement chainée.
**Sorties**
* Un booléen
"""
pass
assert (n==None) or (isinstance(n,list) and len(n)==3 and isinstance(n[0],int) and estNoeudLDC_Gauche(n[2])),warnString(str(n)+" devrait être None ou une liste de 3 éléments [entier, noeudLDC ou None, noeudLDC ou None]")
return True
def estNoeudLDC(n:list)->bool:
"""Vérifie que **n** est un noeud de liste doublement chainée à l'aide des fonctions auxiliaires **estNoeudDroiteLDC()** et **estNoeudGaucheLDC()** ci-dessous.
**Paramètres**
* n -- noeud de liste doublement chainée.
**Sorties**
* Un booléen.
"""
pass
assert (n==None) or (estNoeudLDC_Droite(n) and estNoeudLDC_Gauche(n)),warnString(str(n)+" devrait être None ou une liste de 3 éléments [entier, noeudLDC ou None, noeudLDC ou None]")
return True
#############################################################################################
# GETTERS
#############################################################################################
def getValLDC(n:list)->int:
"""Récupère la valeur du noeud **n** de liste doublement chainée.
**Paramètres**
* n -- noeud de liste doublement chainée.
**Sorties**
* La valeur du noeud.
"""
pass
assert n is not None,warnString("La liste vide n'a pas de valeur")
assert estNoeudLDC(n),warnString("La liste doit être un noeud LDC")
return n[0]
def getPrecedentLDC(n:list)->list:
"""Récupère le noeud précédent du noeud **n**.
**Paramètres**
* n -- noeud de liste doublement chainée .
**Sorties**
* Le noeud précédent.
"""
pass
assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud précédent")
assert estNoeudLDC(n),warnString("La liste doit être un noeud LDC")
return n[1]
def getSuivantLDC(n:list)->list:
"""Récupère le noeud suivant du noeud **n**.
**Paramètres**
* n -- noeud de liste doublement chainée.
**Sorties**
* Le noeud suivant.
"""
pass
assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud suivant")
assert estNoeudLDC(n), warnString("La liste doit être un noeud LDC")
return n[2]
#############################################################################################
# SETTERS
#############################################################################################
def setValLDC(n:list,val:int)->int:
"""Modifie/Attribue la valeur **val** du/au noeud **n** d'une liste doublement chainée.
**Paramètres**
* n -- noeud de liste doublement chainée.
* val -- valeur à attribuer au noeud de la liste doublement chainée.
"""
pass
assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir une valeur")
assert estNoeudLDC(n),warnString("La liste doit être un noeud LDC")
assert isinstance(val,int),warnString(str(val)+" devrait être un entier")
n[0] = val
def setPrecedentLDC(n:list,precedent:list)->list:
"""Modifie/Attribue le noeud **precedent** du noeud **n** d'une liste doublement chainée.
**Paramètres**
* n -- noeud de liste doublement chainée.
* precedent -- le noeud précédent à attribuer. None en début de liste.
"""
pass
assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud précédent")
assert (estNoeudLDC(n)) # msg issu de estNoeudLDC
assert (estNoeudLDC(precedent)) # msg issu de estNoeudLDC
assert isinstance(precedent,list) or precedent==None # msg issu de estNoeudLDC
# Le precedent de n est maintenant precedent
n[1] = precedent
def setSuivantLDC(n:list,suivant:list)->list:
"""Modifie/Attribue le noeud **suivant** du noeud **n** d'une liste doublement chainée.
**Paramètres**
* n -- noeud de liste doublement chainée.
* suivant -- le noeud suivant à attribuer. None en fin de liste.
"""
pass
assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud suivant")
assert (estNoeudLDC(n)),warnString("La liste doit être un noeud LDC")
assert (estNoeudLDC(suivant)),warnString("Le noeud suivant doit être un noeud LDC")
assert isinstance(suivant,list) or suivant==None,warnString("suivant doit être une liste ou None")
n[2] = suivant
#############################################################################################
# FONCTIONS
#############################################################################################
def longueurLDC(ldc:list)->int:
"""Renvoie la longueur de la liste doublement chainée **ldc**.
**Paramètres**
* ldc -- liste doublement chainée.
**Sorties**
* Un entier avec le nombre d'éléments de la liste doublement chainée. 0 si None.
"""
pass
assert (ldc == None) or estNoeudLDC(ldc)# msg issu de estNoeudLDC - Fonction recursive donc on ne vérifie que le premier element.
#
longueur = 0
noeud = ldc
while noeud != None:
longueur +=1
noeud = getSuivantLDC(noeud)
return longueur
def insererDebutLDC(ldc:list,val:int)->list:
"""Insère un noeud avec la valeur **val** au début de la liste doublement chainée **ldc**.
**Paramètres**
* ldc -- liste doublement chainée.
* val -- la valeur du noeud à insérer
**Sorties**
* La liste doublement chainée modifiée avec le noeud supplémentaire au début.
"""
pass
assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
assert isinstance(val,int),warnString(str(val)+" devrait être un entier")
# On crée un nouveau noeud avec la valeur val
firstNode = creerNoeudLDC(val,None,None)
# Si c'était la liste vide la nouvelle liste correspond au nouveau noeud
if (ldc is None):
ldc = firstNode
# Sinon on insert le nouveau noeud au début de la liste
else:
# Le noeud precedent de firstNode reste None,
# Le noeud suivant de firstNode est le premier noeud de la liste
setSuivantLDC(firstNode,ldc)
# On modifie le noeud precedent du premier noeud de la liste
setPrecedentLDC(ldc,firstNode)
ldc = firstNode
return ldc
def insererFinLDC(ldc:list,val:int)->list:
"""Insère un noeud avec la valeur **val** à la fin de la liste doublement chainée **ldc**.
**Paramètres**
* ldc -- liste doublement chainée.
* val -- la valeur du noeud à insérer
**Sorties**
* La liste doublement chainée modifiée avec le noeud supplémentaire à la fin.
"""
pass
assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
assert isinstance(val,int),warnString(str(val)+" devrait être un entier")
# On crée un nouveau noeud avec la valeur val
lastNode = creerNoeudLDC(val,None,None)
# Si c'était la liste vide la nouvelle liste correspond au nouveau noeud
if (ldc is None):
ldc = lastNode
# Sinon on insert le nouveau noeud à la fin de la liste
else:
# On parcourt la liste jusqu'au dernier noeud
noeud = ldc
while getSuivantLDC(noeud) != None:
noeud = getSuivantLDC(noeud)
# On met à jour le noeud suivant
# Le noeud suivant de lastNode reste None,
# On modifie le noeud suivant du dernier noeud de la liste
setSuivantLDC(noeud,lastNode)
# Le noeud precedent de lastNode est le dernier noeud de la liste
setPrecedentLDC(lastNode,noeud)
return ldc
def supprimerDebutLDC(ldc:list)->list:
"""Supprime le premier noeud d'une liste doublement chainée **ldc**.
**Paramètres**
* ldc -- liste doublement chainée.
**Sorties**
* La liste doublement chainée modifiée dont le premier noeud a été supprimé.
"""
pass
assert ldc is not None,warnString("On ne peut supprimer le premier élément de la liste vide")
assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
# On commence avec le second noeud de ldc
firstNode = getSuivantLDC(ldc)
# On fait pointer le noeud précédent du second sur None
setPrecedentLDC(firstNode,None)
return firstNode
def supprimerFinLDC(ldc:list)->list:
"""Supprime le dernier noeud d'une liste doublement chainée **ldc**.
**Paramètres**
* ldc -- liste doublement chainée.
**Sorties**
* La liste doublement chainée modifiée dont le dernier noeud a été supprimé.
"""
pass
assert ldc is not None,warnString("On ne peut supprimer le dernier élément de la liste vide")
assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
# On parcourt la liste jusqu'au dernier noeud
lastNode = ldc
while getSuivantLDC(lastNode) != None:
lastNode = getSuivantLDC(lastNode)
# On récupère l'avant dernier noeud de la liste
setSuivantLDC(getPrecedentLDC(lastNode),None)
return ldc
def accesLDC(ldc:list,p:int)->list:
"""Renvoie le noeud d'indice p de la liste doubelement chainée **ldc**.
Le premier noeud a pour indice 0.
**Paramètres**
* ldc -- liste doublement chainée.
* p -- indice de la position du noeud à récupérer.
**Sorties**
* Un noeudLDC
"""
pass
assert ldc is not None,warnString("On ne peut accéder à un élément de la liste vide")
assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
assert isinstance(p,int),warnString(str(p)+" devrait être un entier")
assert p in range(longueurLDC(ldc)),warnString(str(p)+", la position du noeud doit être comprise entre 0 et "+str(longueurLDC(ldc)-1))
# On parcourt la liste jusqu'au dernier noeud
noeud = ldc
indice = 0
while indice != p:
noeud = getSuivantLDC(noeud)
indice += 1
# On renvoit le noeud d'indice p
return noeud
def insererPlaceLDC(ldc:list,val:int,p:int)->list:
"""Insère le noeud contenant la valeur **val** juste après le noeud d'indice **p** dans la liste doublement chainée **ldc**;
Le premier noeud a pour indice 0.
**Paramètres**
* ldc -- liste doublement chainée.
* val -- valeur du noeud à insérer.
* p -- indice de la position précédent l'insertion.
**Sorties**
* La liste doublement chainée modifiée avec le noeud supplémentaire.
"""
pass
assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
assert isinstance(val,int),warnString(str(val)+" devrait être un entier")
assert isinstance(p,int),warnString(str(p)+" devrait être un entier")
assert (ldc is None and p==0) or (p in range(longueurLDC(ldc))),warnString(str(p)+", la position du noeud doit être comprise entre 0 et "+str(longueurLDC(ldc)-1))
# On crée un nouveau noeud avec la valeur val
newNode = creerNoeudLDC(val,None,None)
# Si c'était la liste vide la nouvelle liste correspond au nouveau noeud
if (ldc is None):
return newNode
# Sinon on insert le nouveau noeud à l'indice p
else:
# On parcourt la liste jusqu'au noeud p
noeud = ldc
if (p == 0):
ldc = insererDebutLDC(ldc,val)
else:
indice = 0
while indice != p:
noeud = getSuivantLDC(noeud)
indice += 1
setSuivantLDC(newNode,noeud)
setPrecedentLDC(newNode,getPrecedentLDC(noeud))
setSuivantLDC(getPrecedentLDC(noeud),newNode)
setPrecedentLDC(noeud,newNode)
return ldc
def supprimerPlaceLDC(ldc:list,p:int)->list:
"""Supprime le noeud d'indice **p** de la liste doublement chainée **ldc**;
Le premier noeud a pour indice 0.
**Paramètres**
* ldc -- liste doublement chainée.
* p -- indice de la position à supprimer.
**Sorties**
* La liste doublement chainée modifiée avec le noeud supplémentaire.
"""
pass
assert ldc is not None,warnString("On ne peut rien supprimer de la liste vide")
assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
assert isinstance(p,int),warnString(str(p)+" devrait être un entier")
assert p in range(longueurLDC(ldc)),warnString(str(p)+", la position du noeud doit être comprise entre 0 et "+str(longueurLDC(ldc)-1))
noeudToDelete = ldc
if (p == 0):
ldc = supprimerDebutLDC(ldc)
elif (p == longueurLDC(ldc)-1):
ldc = supprimerFinLDC(ldc)
else:
indice = 0
while indice != p:
noeudToDelete = getSuivantLDC(noeudToDelete)
indice +=1
setSuivantLDC(getPrecedentLDC(noeudToDelete),getSuivantLDC(noeudToDelete))
setPrecedentLDC(getSuivantLDC(noeudToDelete),getPrecedentLDC(noeudToDelete))
return ldc
def supprimerValLDC(ldc:list,val:int)->list:
"""Supprime le premier noeud de valeur **val** de la liste doublement chainée **ldc**;
Le premier noeud a pour indice 0.
**Paramètres**
* ldc -- liste doublement chainée.
* val -- valeur à supprimer.
**Sorties**
* La liste doublement chainée modifiée avec le premier noeud de valeur **val** en moins.
"""
pass
assert ldc is not None,warnString("On ne peut rien supprimer de la liste vide")
assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
assert isinstance(val,int),warnString(str(val)+" devrait être un entier")
# On parcourt la liste pour trouver le premier noeud de valeur val
p = 0
currentNode = ldc
while getValLDC(currentNode) != val and p != longueurLDC(ldc)-1:
currentNode = getSuivantLDC(currentNode)
p += 1
# Si p vaut la longueur de la liste alors c'est que le valeur n'y figure pas
# On ne supprime que dans le cas contraire
if (p != longueurLDC(ldc)-1):
ldc = supprimerPlaceLDC(ldc,p)
return ldc
def LDC2List(ldc:list)->list:
"""Renvoie la liste Python contenant les éléments de **ldc**;
Renvoie **[]** si **ldc** vaut **None**
**Paramètres**
* ldc -- liste doublement chainée.
**Sorties**
* Les éléments de la liste doublement chainée dans un tableau.
"""
pass
assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC
# On parcourt la liste et on récupère les valeurs dans l'ordre
valsLDC = []
noeud = ldc
while noeud != None:
valsLDC.append(getValLDC(noeud))
noeud = getSuivantLDC(noeud)
return valsLDC
def list2LDC(listPython:list)->list:
"""Renvoie la liste doublement chainée contenant dans le même ordre les éléments de la liste Python **listPython**;
Renvoie **None** si **listePython** vaut **[]**
**Paramètres**
* listePython -- liste Python.
**Sorties**
* Une liste doublement chainée avec les éléments du tableau passé en paramètre.
"""
pass
assert isinstance(listPython,list),warnString(str(listPython)+" devrait être une liste")
assert (all(isinstance(element,int) for element in listPython)),warnString("Tous les éléments de "+str(listPython)+" devrait être des entiers") # msg issu de estNoeudLDC
if listPython == []:
outLDC = None
else: # listPython != [] :
outLDC = creerNoeudLDC(listPython[0],None,None)
k = 1
while k != len(listPython):
outLDC = insererFinLDC(outLDC,listPython[k])
k += 1
return outLDC
#############################################################################################
# TESTS
#############################################################################################
def tests_Definitions():
"""Teste les définitions"""
# pour tester les assertions de estNoeudLDC() et de getValLDC()
listeVide = creerListeVide()
noeudOK = creerNoeudLDC(5,None,None)
noeudKO = ['foo',None,None]
myTitle("TESTS DEFINITIONS")
myTestsTitle("creerNoeudLDC()")
print("creerNoeudLDC(7,None,None) : ", creerNoeudLDC(7,None,None))
myAssertTestsTitle("estNoeudLDC() -> test des assertions")
try:
creerNoeudLDC('foo',None,None)
except AssertionError as msg:
print(warnString("creerNoeudLDC('foo',None,None) -> "),msg)
try:
creerNoeudLDC(1,'bar',None)
except AssertionError as msg:
print(warnString("creerNoeudLDC(1,'bar',None) -> "),msg)
try:
creerNoeudLDC(1,None,'bar')
except AssertionError as msg:
print(warnString("creerNoeudLDC(1,None,'bar') -> "),msg)
myTestsTitle("estNoeudLDC()")
print("Liste vide : ",estNoeudLDC(listeVide))
print("Noeud OK : ",estNoeudLDC(noeudOK))
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("estNoeudLDC() -> test des assertions")
try:
print(warnString("noeudKO : "+str(noeudKO)))
estNoeudLDC(noeudKO)
except AssertionError as msg:
print(warnString("estNoeudLDC(noeudKO) -> "),msg)
def tests_Getters():
"""Teste les getters"""
# pour tester les assertions de getValLDC()
listeVide = creerListeVide()
noeudOK = creerNoeudLDC(5,None,None)
noeudKO = ['foo',None,None]
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,noeud0,None)
setSuivantLDC(noeud0,noeud1)
myTitle("TESTS GETTERS")
myTestsTitle("Les noeuds")
print("noeud0 : ",noeud0)
print("estNoeudLDC(noeud0) ? : ",estNoeudLDC(noeud0))
print("noeud1 : ",noeud1)
print("estNoeudLDC(noeud1) ? : ",estNoeudLDC(noeud1))
print("noeudOK : ",noeudOK)
print("estNoeudLDC(noeudOK) ? : ",estNoeudLDC(noeudOK))
myTestsTitle("getValLDC()")
print("getValLDC(noeud0) : ",getValLDC(noeud0))
print("getValLDC(noeud1) : ",getValLDC(noeud1))
print("getValLDC(noeudOK) : ",getValLDC(noeudOK))
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("getValLDC() -> test des assertions")
try:
getValLDC(listeVide)
except AssertionError as msg:
print(warnString("getValLDC(listeVide) -> "),msg)
try:
print(warnString("noeudKO : "+str(noeudKO)))
getValLDC(noeudKO)
except AssertionError as msg:
print(warnString("getValLDC(noeudKO) ->"),msg)
myTestsTitle("getPrecedentLDC()")
print("getPrecedentLDC(noeud0) : ",getPrecedentLDC(noeud0))
print("getPrecedentLDC(noeud1) : ",getPrecedentLDC(noeud1))
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("getPrecedentLDC() -> test des assertions")
try:
getPrecedentLDC(listeVide)
except AssertionError as msg:
print(warnString("getPrecedentLDC(listeVide) -> "),msg)
print(sepSymb('-'))
myTestsTitle("getSuivantLDC()")
print("getSuivantLDC(noeud0) : ",getSuivantLDC(noeud0))
print("getSuivantLDC(noeud1) : ",getSuivantLDC(noeud1))
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("getSuivantLDC() -> test des assertions")
try:
getSuivantLDC(listeVide)
except AssertionError as msg:
print(warnString("getSuivantLDC(listeVide) -> "),msg)
def tests_Setters():
"""Teste les setters"""
# pour tester les assertions de getValLDC()
listeVide = creerListeVide()
noeudOK = creerNoeudLDC(5,None,None)
noeudKO = ['foo',None,None]
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,noeud0,None)
setSuivantLDC(noeud0,noeud1)
noeud2 = creerNoeudLDC(2,noeud1,None)
setSuivantLDC(noeud1,noeud2)
noeudTestSetters = creerNoeudLDC(9,None,None)
myTitle("SETTERS")
myTestsTitle("Les noeuds d'origine")
print("noeud0 : ",noeud0)
print("noeud1 : ",noeud1)
print("noeud2 : ",noeud2)
myTestsTitle("setValLDC()")
print("noeud0 : ",noeud0)
setValLDC(noeud0,10)
print("setValLDC(noeud0,10) : ",noeud0)
print("noeud1 : ",noeud1)
setValLDC(noeud1,11)
print("setValLDC(noeud1,11) : ",noeud1)
print("noeud2 : ",noeud2)
setValLDC(noeud2,12)
print("setValLDC(noeud2,12) : ",noeud2)
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("setValLDC() -> test des assertions")
try:
setValLDC(listeVide,2)
except AssertionError as msg:
print(warnString("setValLDC(listeVide,2) ->"),msg)
try:
print(warnString("noeudKO : "+str(noeudKO)))
setValLDC(noeudKO,2)
except AssertionError as msg:
print(warnString("setValLDC(noeudKO,2) ->"),msg)
try:
setValLDC(noeudOK,'bar')
except AssertionError as msg:
print(warnString("setValLDC(noeudOK,'bar') ->"),msg)
myTestsTitle("setPrecedentLDC(noeudTestSetters,[99,None,None])")
print("noeudTestSetters avant :",noeudTestSetters)
setPrecedentLDC(noeudTestSetters,[99,None,None])
print("noeudTestSetters après :",noeudTestSetters)
print(sepEqual("reinitialisation des valeurs"))
setPrecedentLDC(noeudTestSetters,None)
print("noeudTestSetters réinitialisé :",noeudTestSetters
)
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("setPrecedentLDC() -> test des assertions")
try:
setPrecedentLDC(listeVide,noeudOK)
except AssertionError as msg:
print(warnString("setPrecedentLDC(listeVide,noeudOK) ->"),msg)
try:
print(warnString("noeudKO : "+str(noeudKO)))
setPrecedentLDC(noeudTestSetters,noeudKO)
except AssertionError as msg:
print(warnString("setPrecedentLDC(noeudTestSetters,noeudKO) ->"),msg)
try:
print(warnString("noeudKO : "+str(noeudKO)))
setPrecedentLDC(noeudKO,noeudOK)
except AssertionError as msg:
print(warnString("setPrecedentLDC(noeudKO,noeudOK) ->"),msg)
try:
setPrecedentLDC(noeudTestSetters,'bar')
except AssertionError as msg:
print(warnString("setPrecedentLDC(noeudTestSetters,'bar') ->"),msg)
myTestsTitle("setSuivantLDC(noeudTestSetters,[99,None,None])")
setSuivantLDC(noeudTestSetters,[99,None,None])
print("noeudTestSetters après :",noeudTestSetters)
print(sepEqual("reinitialisation des valeurs"))
setSuivantLDC(noeudTestSetters,None)
print("noeudTestSetters réinitialisé :",noeudTestSetters)
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("setSuivantLDC() -> test des assertions")
try:
setSuivantLDC(listeVide,noeudOK)
except AssertionError as msg:
print(warnString("setSuivantLDC(listeVide,noeudOK) ->"),msg)
try:
setSuivantLDC(noeudTestSetters,noeudKO)
except AssertionError as msg:
print(warnString("setSuivantLDC(noeudTestSetters,noeudKO) ->"),msg)
try:
print(warnString("noeudKO : "+str(noeudKO)))
setSuivantLDC(noeudKO,noeudOK)
except AssertionError as msg:
print(warnString("setSuivantLDC(noeudKO,noeudOK) ->"),msg)
try:
setSuivantLDC(noeudTestSetters,'bar')
except AssertionError as msg:
print(warnString("setSuivantLDC(noeudTestSetters,'bar') ->"),msg)
def tests_longueurLDC():
"""Teste la fonction longueurLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("longueurLDC()")
print("Liste Vide : ",listeVide)
print("longueurLDC(listeVide) : ",longueurLDC(listeVide))
print("Liste ldc : ",ldc)
print("longueurLDC(ldc) : ",longueurLDC(ldc))
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("longueurLDC() -> test des assertions")
try:
print(warnString("ldcKO ->"+str(ldcKO)))
longueurLDC(ldcKO)
except AssertionError as msg:
print(warnString("longueurLDC(ldcKO) ->"),msg)
def tests_insererDebutLDC():
"""Teste la fonction insererDebutLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("insererDebutLDC()")
print("Liste Vide : ",listeVide)
listeVide = insererDebutLDC(listeVide,999)
print("Liste Vide après insererDebutLDC(listeVide,999) : ",listeVide)
print(sepSymb("-"))
print("Liste ldc avant : ",ldc)
ldc = insererDebutLDC(ldc,999)
print("Liste ldc après insererDebutLDC(ldc,999) : ",ldc)
# réinitialisation de ldc
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("insererDebutLDC() -> test des assertions")
try:
print(warnString("ldcKO ->"+str(ldcKO)))
ldcKO = insererDebutLDC(ldcKO,999)
except AssertionError as msg:
print(warnString("insererDebutLDC(ldcKO,999) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldc ->"+str(ldc)))
ldc = insererDebutLDC(ldc,'string')
except AssertionError as msg:
print(warnString("insererDebutLDC(ldc,'string') ->"),msg)
def tests_insererFinLDC():
"""Teste la fonction insererFinLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("insererFinLDC()")
print("Liste Vide : ",listeVide)
listeVide = insererFinLDC(listeVide,888)
print("Liste Vide après insererFinLDC(listeVide,888) : ",listeVide)
print(sepSymb("-"))
print("Liste ldc avant : ",ldc)
ldc = insererFinLDC(ldc,888)
print("Liste ldc après insererFinLDC(ldc,888) : ",ldc)
# réinitialisation de ldc
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("insererFinLDC() -> test des assertions")
try:
print(warnString("ldcKO ->"+str(ldcKO)))
ldcKO = insererDebutLDC(ldcKO,888)
except AssertionError as msg:
print(warnString("insererFinLDC(ldcKO,888) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldc ->"+str(ldc)))
ldc = insererDebutLDC(ldc,'string')
except AssertionError as msg:
print(warnString("insererFinLDC(ldc,'string') ->"),msg)
def tests_supprimerDebutLDC():
"""Teste la fonction supprimerDebutLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("supprimerDebutLDC()")
print("Liste ldc avant : ",ldc)
ldc = supprimerDebutLDC(ldc)
print("Liste ldc après supprimerDebutLDC(ldc) : ",ldc)
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("supprimerDebutLDC() -> test des assertions")
try:
listeVide = supprimerDebutLDC(listeVide)
except AssertionError as msg:
print(warnString("supprimerDebutLDC(listeVide) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldcKO ->"+str(ldcKO)))
ldcKO = supprimerDebutLDC(ldcKO)
except AssertionError as msg:
print(warnString("supprimerDebutLDC(ldcKO) ->"),msg)
def tests_supprimerFinLDC():
"""Teste la fonction supprimerFinLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("supprimerFinLDC()")
print("Liste ldc avant : ",ldc)
ldc = supprimerFinLDC(ldc)
print("Liste ldc après supprimerFinLDC(ldc) : ",ldc)
# Tests pour lever les erreurs d'assertion
myAssertTestsTitle("supprimerFinLDC() -> test des assertions")
try:
listeVide = supprimerFinLDC(listeVide)
except AssertionError as msg:
print(warnString("supprimerFinLDC(listeVide) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldcKO ->"+str(ldcKO)))
ldcKO = supprimerFinLDC(ldcKO)
except AssertionError as msg:
print(warnString("supprimerFinLDC(ldcKO) ->"),msg)
def tests_accesLDC():
"""Teste la fonction accessLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("accesLDC()")
print("Liste ldc : ",ldc)
print("accesLDC(ldc,0) : ",accesLDC(ldc,0))
print("accesLDC(ldc,1) : ",accesLDC(ldc,1))
print("accesLDC(ldc,2) : ",accesLDC(ldc,2))
# Pour tester les assertions
myAssertTestsTitle("accesLDC() -> test assertion")
try:
accesLDC(listeVide,3)
except AssertionError as msg:
print(warnString("accesLDC(listeVide,3) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldcKO ->"+str(ldcKO)))
accesLDC(ldcKO,3)
except AssertionError as msg:
print(warnString("accesLDC(ldcKO,3) ->"),msg)
try:
accesLDC(ldc,'foo')
except AssertionError as msg:
print(warnString("accesLDC(ldc,'foo') ->"),msg)
# p doit faire partie des indices possibles pour la liste ldc, ici max 2
try:
accesLDC(ldc,3)
except AssertionError as msg:
print(warnString("accesLDC(ldc,3) ->"),msg)
def tests_insererPlaceLDC():
"""Teste la fonction inserePlaceLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("insererPlaceLDC()")
print("Liste Vide : ",listeVide)
listeVide = insererPlaceLDC(listeVide,888,0)
print("Liste Vide après : ",listeVide)
print("Liste ldc : ",ldc)
ldc=insererPlaceLDC(ldc,999,0)
print("insererPlaceLDC(ldc,999,0) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
ldc=insererPlaceLDC(ldc,999,1)
print("insererPlaceLDC(ldc,999,1) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
ldc=insererPlaceLDC(ldc,999,2)
print("insererPlaceLDC(ldc,999,2) : ",ldc)
# On réinitialise pour les tests d'assertions
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
ldc = noeud0
# Pour tester les assertions
myAssertTestsTitle("insererPlaceLDC() -> test assertion")
try:
print(warnString("ldcKO ->"+str(ldcKO)))
insererPlaceLDC(ldcKO,999,0)
except AssertionError as msg:
print(warnString("insererPlaceLDC(ldcKO,999,0) ->"),msg)
print(warnString(sepSymb("-")))
try:
insererPlaceLDC(ldc,'foo',0)
except AssertionError as msg:
print(warnString("insererPlaceLDC(ldc,'foo',0) ->"),msg)
try:
insererPlaceLDC(ldc,999,'bar')
except AssertionError as msg:
print(warnString("insererPlaceLDC(ldc,999,'bar') ->"),msg)
try:
insererPlaceLDC(ldc,999,3)
except AssertionError as msg:
print(warnString("insererPlaceLDC(ldc,999,3) ->"),msg)
def tests_supprimerPlaceLDC():
"""Teste la fonction supprimerPlaceLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud3 = creerNoeudLDC(3,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud3)
setPrecedentLDC(noeud3,noeud2)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("supprimerPlaceLDC()")
print("Liste ldc : ",ldc)
print(sepSymb("-"))
ldc=supprimerPlaceLDC(ldc,0)
print("supprimerPlaceLDC(ldc,0) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud3 = creerNoeudLDC(3,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud3)
setPrecedentLDC(noeud3,noeud2)
ldc = noeud0
ldc=supprimerPlaceLDC(ldc,1)
print("supprimerPlaceLDC(ldc,1) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud3 = creerNoeudLDC(3,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud3)
setPrecedentLDC(noeud3,noeud2)
ldc = noeud0
ldc=supprimerPlaceLDC(ldc,2)
print("supprimerPlaceLDC(ldc,2) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud3 = creerNoeudLDC(3,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud3)
setPrecedentLDC(noeud3,noeud2)
ldc = noeud0
ldc=supprimerPlaceLDC(ldc,3)
print("supprimerPlaceLDC(ldc,3) : ",ldc)
# On réinitialise pour les tests d'assertions
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud3 = creerNoeudLDC(3,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud3)
setPrecedentLDC(noeud3,noeud2)
ldc = noeud0
# Pour tester les assertions
myAssertTestsTitle("supprimerPlaceLDC() -> test assertion")
try:
supprimerPlaceLDC(listeVide,0)
except AssertionError as msg:
print(warnString("supprimerPlaceLDC(listeVide,0) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldcKO ->"+str(ldcKO)))
supprimerPlaceLDC(ldcKO,0)
except AssertionError as msg:
print(warnString("supprimerPlaceLDC(ldcKO,0) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldc ->"+str(ldc)))
supprimerPlaceLDC(ldc,'foo')
except AssertionError as msg:
print(warnString("supprimerPlaceLDC(ldc,'foo') ->"),msg)
try:
supprimerPlaceLDC(ldc,4)
except AssertionError as msg:
print(warnString("supprimerPlaceLDC(ldc,4) ->"),msg)
def tests_supprimerValLDC():
"""Teste la fonction supprimerValLDC()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud1bis = creerNoeudLDC(1,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud1bis)
setPrecedentLDC(noeud1bis,noeud2)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("supprimerValLDC()")
print("Liste ldc : ",ldc)
print(sepSymb("-"))
ldc=supprimerPlaceLDC(ldc,0)
print("supprimerValLDC(ldc,0) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud1bis = creerNoeudLDC(1,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud1bis)
setPrecedentLDC(noeud1bis,noeud2)
ldc = noeud0
ldc=supprimerValLDC(ldc,1)
print("supprimerValLDC(ldc,1) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud1bis = creerNoeudLDC(1,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud1bis)
setPrecedentLDC(noeud1bis,noeud2)
ldc = noeud0
ldc=supprimerValLDC(ldc,2)
print("supprimerValLDC(ldc,2) : ",ldc)
# On réinitialise
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud1bis = creerNoeudLDC(1,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud1bis)
setPrecedentLDC(noeud1bis,noeud2)
ldc = noeud0
ldc=supprimerValLDC(ldc,3)
print("supprimerValLDC(ldc,3) : ",ldc)
# On réinitialise pour les tests d'assertions
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud1bis = creerNoeudLDC(1,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud1bis)
setPrecedentLDC(noeud1bis,noeud2)
ldc = noeud0
# Pour tester les assertions
myAssertTestsTitle("supprimerPlaceLDC() -> test assertion")
try:
supprimerValLDC(listeVide,0)
except AssertionError as msg:
print(warnString("supprimerValLDC(listeVide,0) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldcKO ->"+str(ldcKO)))
supprimerValLDC(ldcKO,0)
except AssertionError as msg:
print(warnString("supprimerValLDC(ldcKO,0) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldc ->"+str(ldc)))
supprimerValLDC(ldc,'foo')
except AssertionError as msg:
print(warnString("supprimerValLDC(ldc,'foo') ->"),msg)
def tests_LDC2List():
"""Teste la fonction LDC2List()"""
listeVide = creerListeVide()
# On crée des noeuds pour faire une liste de noeuds
noeud0 = creerNoeudLDC(0,None,None)
noeud1 = creerNoeudLDC(1,None,None)
noeud2 = creerNoeudLDC(2,None,None)
noeud3 = creerNoeudLDC(3,None,None)
setSuivantLDC(noeud0,noeud1)
setPrecedentLDC(noeud1,noeud0)
setSuivantLDC(noeud1,noeud2)
setPrecedentLDC(noeud2,noeud1)
setSuivantLDC(noeud2,noeud3)
setPrecedentLDC(noeud3,noeud2)
ldc = noeud0
# Pour lever les erreurs d'assertions
ldcKO = ['string',noeud1,noeud2]
myTestsTitle("LDC2List()")
print("Liste Vide : ",listeVide)
print("LDC2List(listeVide) : ",LDC2List(listeVide))
print(sepSymb("-"))
print("Liste ldc : ",ldc)
print("LDC2List(ldc) : ",LDC2List(ldc))
# Pour tester les assertions
myAssertTestsTitle("LDC2List() -> test assertion")
try:
print(warnString("ldcKO ->"+str(ldcKO)))
LDC2List(ldcKO)
except AssertionError as msg:
print(warnString("LDC2List(ldcKO) ->"),msg)
def tests_List2LDC():
"""Teste la fonction list2LDC()"""
listeVide = []
ldc = [0,1,2,3]
# Pour lever les erreurs d'assertions
ldcKO = 'string'
ldcKObis = [0,'1',2]
myTestsTitle("LDC2List()")
print("Liste Vide : ",listeVide)
print("list2LDC(listeVide) : ",list2LDC(listeVide))
print(sepSymb("-"))
print("Liste ldc : ",ldc)
print("list2LDC(ldc) : ",list2LDC(ldc))
# Pour tester les assertions
myAssertTestsTitle("lsit2LDC() -> test assertion")
try:
print(warnString("ldcKO ->"+str(ldcKO)))
list2LDC(ldcKO)
except AssertionError as msg:
print(warnString("list2LDC(ldcKO) ->"),msg)
print(warnString(sepSymb("-")))
try:
print(warnString("ldcKObis ->"+str(ldcKObis)))
list2LDC(ldcKObis)
except AssertionError as msg:
print(warnString("list2LDC(ldcKObis) ->"),msg)
def tests_MainP1():
"""Gère les tests de la partie 1"""
# On récupère la date au début du traitement
start_time = datetime.now()
os.system("clear")
choice = ''
while choice not in ['1','2','3','4']:
os.system("clear")
myTitle("PARTIE 1 - TESTS")
choice = input("""
Quels tests voulez-vous lancer ?
---> 1 : Les définitions
---> 2 : Les getters
---> 3 : Les setters
---> 4 : Les fonctions
""")
os.system("clear")
if (choice == '1'):
tests_Definitions()
elif (choice == '2'):
tests_Getters()
elif (choice == '3'):
tests_Setters()
elif (choice == '4'):
functionChoice = ''
while functionChoice not in ['1','2','3','4','5','6','7','8','9','10','11','12']:
os.system("clear")
myTitle("PARTIE 1 - TESTS DES FONCTIONS")
functionChoice = input("""
Quelle(s) fonction(s) voulez-vous tester ?
---> 1 : longueurLDC()
---> 2 : insererDebutLDC()
---> 3 : insererFinLDC()
---> 4 : supprimerDebutLDC()
---> 5 : supprimerFinLDC()
---> 6 : accesLDC()
---> 7 : insererPlaceLDC()
---> 8 : supprimerPlaceLDC()
---> 9 : supprimerValLDC()
---> 10 : LDC2List()
---> 11 : list2LDC()
---> 12 : Toutes les fonctions
""")
os.system("clear")
if functionChoice in str(range(1,11)):
myTitle("TESTS FONCTIONS")
if (functionChoice == '1'):
tests_longueurLDC()
elif (functionChoice == '2'):
tests_insererDebutLDC()
elif (functionChoice == '3'):
tests_insererFinLDC()
elif (functionChoice == '4'):
tests_supprimerDebutLDC()
elif (functionChoice == '5'):
tests_supprimerFinLDC()
elif (functionChoice == '6'):
tests_accesLDC()
elif (functionChoice == '7'):
tests_insererPlaceLDC()
elif (functionChoice == '8'):
tests_supprimerPlaceLDC()
elif (functionChoice == '9'):
tests_supprimerValLDC()
elif (functionChoice == '10'):
tests_LDC2List()
elif (functionChoice == '11'):
tests_List2LDC()
elif (functionChoice == '12'):
myTitle("TESTS DE TOUTES LES FONCTIONS")
tests_longueurLDC()
tests_insererDebutLDC()
tests_insererFinLDC()
tests_supprimerDebutLDC()
tests_supprimerFinLDC()
tests_accesLDC()
tests_insererPlaceLDC()
tests_supprimerPlaceLDC()
tests_supprimerValLDC()
tests_LDC2List()
tests_List2LDC()
# On évalue le temps de traitement
end_time = datetime.now()
# On affiche
timeShow(end_time-start_time)
if __name__ == "__main__":
restart = ''
while restart not in ['o','n']:
genericTitle("UN AUTRE TEST ?",'#')
restart = input("Taper o ou n pour relancer le script --> ")
if restart == 'o':
tests_MainP1()
def tests_MainP1New():
"""Gère les tests de la partie 1"""
# On récupère la date au début du traitement
start_time = datetime.now()
os.system("clear")
tests_Definitions()
tests_Getters()
tests_Setters()
tests_longueurLDC()
tests_insererDebutLDC()
tests_insererFinLDC()
tests_supprimerDebutLDC()
tests_supprimerFinLDC()
tests_accesLDC()
tests_insererPlaceLDC()
tests_supprimerPlaceLDC()
tests_supprimerValLDC()
tests_LDC2List()
tests_List2LDC()
# On évalue le temps de traitement
end_time = datetime.now()
# On affiche
timeShow(end_time-start_time)
if __name__ == "__main__":
# tests_MainP1()
tests_MainP1New()
Functions
def LDC2List(ldc: list) ‑> list
-
Renvoie la liste Python contenant les éléments de ldc; Renvoie [] si ldc vaut None
Paramètres
* ldc -- liste doublement chainée.
Sorties
* Les éléments de la liste doublement chainée dans un tableau.
Expand source code
def LDC2List(ldc:list)->list: """Renvoie la liste Python contenant les éléments de **ldc**; Renvoie **[]** si **ldc** vaut **None** **Paramètres** * ldc -- liste doublement chainée. **Sorties** * Les éléments de la liste doublement chainée dans un tableau. """ pass assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC # On parcourt la liste et on récupère les valeurs dans l'ordre valsLDC = [] noeud = ldc while noeud != None: valsLDC.append(getValLDC(noeud)) noeud = getSuivantLDC(noeud) return valsLDC
def accesLDC(ldc: list, p: int) ‑> list
-
Renvoie le noeud d'indice p de la liste doubelement chainée ldc. Le premier noeud a pour indice 0.
Paramètres
* ldc -- liste doublement chainée. * p -- indice de la position du noeud à récupérer.
Sorties
* Un noeudLDC
Expand source code
def accesLDC(ldc:list,p:int)->list: """Renvoie le noeud d'indice p de la liste doubelement chainée **ldc**. Le premier noeud a pour indice 0. **Paramètres** * ldc -- liste doublement chainée. * p -- indice de la position du noeud à récupérer. **Sorties** * Un noeudLDC """ pass assert ldc is not None,warnString("On ne peut accéder à un élément de la liste vide") assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC assert isinstance(p,int),warnString(str(p)+" devrait être un entier") assert p in range(longueurLDC(ldc)),warnString(str(p)+", la position du noeud doit être comprise entre 0 et "+str(longueurLDC(ldc)-1)) # On parcourt la liste jusqu'au dernier noeud noeud = ldc indice = 0 while indice != p: noeud = getSuivantLDC(noeud) indice += 1 # On renvoit le noeud d'indice p return noeud
def creerListeVide()
-
Crée une liste vide.
Expand source code
def creerListeVide(): """Crée une liste vide.""" pass ## la liste vide vaut None return None
def creerNoeudLDC(val: int, precedent: list, suivant: list) ‑> list
-
Crée un Noeud.
Un noeud est une liste Python de trois cases [valeur, noeud precedent, noeud suivant]
Paramètres
* val -- la valeur du noeud. * precedent -- le noeud précédent. None en début de liste. * suivant -- le noeud suivant. None en fin de liste.
Sorties
* Une liste de trois éléments [val,precedent,suivant].
Expand source code
def creerNoeudLDC(val:int,precedent:list,suivant:list)->list: """Crée un Noeud. Un noeud est une liste Python de trois cases **[valeur, noeud precedent, noeud suivant]** **Paramètres** * val -- la valeur du noeud. * precedent -- le noeud précédent. None en début de liste. * suivant -- le noeud suivant. None en fin de liste. **Sorties** * Une liste de trois éléments [val,precedent,suivant]. """ pass assert isinstance(val,int),warnString(str(val)+" devrait être un entier") assert isinstance(precedent,list) or precedent==None,warnString(str(precedent)+" devrait être une liste ou None") assert isinstance(suivant,list) or suivant==None,warnString(str(suivant)+" devrait être une liste ou None") return [val,precedent,suivant]
def estNoeudLDC(n: list) ‑> bool
-
Vérifie que n est un noeud de liste doublement chainée à l'aide des fonctions auxiliaires estNoeudDroiteLDC() et estNoeudGaucheLDC() ci-dessous.
Paramètres
* n -- noeud de liste doublement chainée.
Sorties
* Un booléen.
Expand source code
def estNoeudLDC(n:list)->bool: """Vérifie que **n** est un noeud de liste doublement chainée à l'aide des fonctions auxiliaires **estNoeudDroiteLDC()** et **estNoeudGaucheLDC()** ci-dessous. **Paramètres** * n -- noeud de liste doublement chainée. **Sorties** * Un booléen. """ pass assert (n==None) or (estNoeudLDC_Droite(n) and estNoeudLDC_Gauche(n)),warnString(str(n)+" devrait être None ou une liste de 3 éléments [entier, noeudLDC ou None, noeudLDC ou None]") return True
def estNoeudLDC_Droite(n: list) ‑> bool
-
Vérifie que n est un noeud de liste doublement chainée et que tous les éléments à droite de n le sont aussi.
Paramètres
* n -- noeud de liste doublement chainée.
Sorties
* Un booléen
Expand source code
def estNoeudLDC_Droite(n:list)->bool: """Vérifie que **n** est un noeud de liste doublement chainée et que tous les éléments à droite de **n** le sont aussi. **Paramètres** * n -- noeud de liste doublement chainée. **Sorties** * Un booléen """ pass assert (n==None) or (isinstance(n,list) and len(n)==3 and isinstance(n[0],int) and estNoeudLDC_Droite(n[1])),warnString(str(n)+" devrait être None ou une liste de 3 éléments [entier, noeudLDC ou None, noeudLDC ou None]") return True
def estNoeudLDC_Gauche(n: list) ‑> bool
-
Vérifie que n est un noeud de liste doublement chainée et que tous les éléments à gauche de n le sont aussi.
Paramètres
* n -- noeud de liste doublement chainée.
Sorties
* Un booléen
Expand source code
def estNoeudLDC_Gauche(n:list)->bool: """Vérifie que **n** est un noeud de liste doublement chainée et que tous les éléments à gauche de **n** le sont aussi. **Paramètres** * n -- noeud de liste doublement chainée. **Sorties** * Un booléen """ pass assert (n==None) or (isinstance(n,list) and len(n)==3 and isinstance(n[0],int) and estNoeudLDC_Gauche(n[2])),warnString(str(n)+" devrait être None ou une liste de 3 éléments [entier, noeudLDC ou None, noeudLDC ou None]") return True
def getPrecedentLDC(n: list) ‑> list
-
Récupère le noeud précédent du noeud n.
Paramètres
* n -- noeud de liste doublement chainée .
Sorties
* Le noeud précédent.
Expand source code
def getPrecedentLDC(n:list)->list: """Récupère le noeud précédent du noeud **n**. **Paramètres** * n -- noeud de liste doublement chainée . **Sorties** * Le noeud précédent. """ pass assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud précédent") assert estNoeudLDC(n),warnString("La liste doit être un noeud LDC") return n[1]
def getSuivantLDC(n: list) ‑> list
-
Récupère le noeud suivant du noeud n.
Paramètres
* n -- noeud de liste doublement chainée.
Sorties
* Le noeud suivant.
Expand source code
def getSuivantLDC(n:list)->list: """Récupère le noeud suivant du noeud **n**. **Paramètres** * n -- noeud de liste doublement chainée. **Sorties** * Le noeud suivant. """ pass assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud suivant") assert estNoeudLDC(n), warnString("La liste doit être un noeud LDC") return n[2]
def getValLDC(n: list) ‑> int
-
Récupère la valeur du noeud n de liste doublement chainée.
Paramètres
* n -- noeud de liste doublement chainée.
Sorties
* La valeur du noeud.
Expand source code
def getValLDC(n:list)->int: """Récupère la valeur du noeud **n** de liste doublement chainée. **Paramètres** * n -- noeud de liste doublement chainée. **Sorties** * La valeur du noeud. """ pass assert n is not None,warnString("La liste vide n'a pas de valeur") assert estNoeudLDC(n),warnString("La liste doit être un noeud LDC") return n[0]
def insererDebutLDC(ldc: list, val: int) ‑> list
-
Insère un noeud avec la valeur val au début de la liste doublement chainée ldc.
Paramètres
* ldc -- liste doublement chainée. * val -- la valeur du noeud à insérer
Sorties
* La liste doublement chainée modifiée avec le noeud supplémentaire au début.
Expand source code
def insererDebutLDC(ldc:list,val:int)->list: """Insère un noeud avec la valeur **val** au début de la liste doublement chainée **ldc**. **Paramètres** * ldc -- liste doublement chainée. * val -- la valeur du noeud à insérer **Sorties** * La liste doublement chainée modifiée avec le noeud supplémentaire au début. """ pass assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC assert isinstance(val,int),warnString(str(val)+" devrait être un entier") # On crée un nouveau noeud avec la valeur val firstNode = creerNoeudLDC(val,None,None) # Si c'était la liste vide la nouvelle liste correspond au nouveau noeud if (ldc is None): ldc = firstNode # Sinon on insert le nouveau noeud au début de la liste else: # Le noeud precedent de firstNode reste None, # Le noeud suivant de firstNode est le premier noeud de la liste setSuivantLDC(firstNode,ldc) # On modifie le noeud precedent du premier noeud de la liste setPrecedentLDC(ldc,firstNode) ldc = firstNode return ldc
def insererFinLDC(ldc: list, val: int) ‑> list
-
Insère un noeud avec la valeur val à la fin de la liste doublement chainée ldc.
Paramètres
* ldc -- liste doublement chainée. * val -- la valeur du noeud à insérer
Sorties
* La liste doublement chainée modifiée avec le noeud supplémentaire à la fin.
Expand source code
def insererFinLDC(ldc:list,val:int)->list: """Insère un noeud avec la valeur **val** à la fin de la liste doublement chainée **ldc**. **Paramètres** * ldc -- liste doublement chainée. * val -- la valeur du noeud à insérer **Sorties** * La liste doublement chainée modifiée avec le noeud supplémentaire à la fin. """ pass assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC assert isinstance(val,int),warnString(str(val)+" devrait être un entier") # On crée un nouveau noeud avec la valeur val lastNode = creerNoeudLDC(val,None,None) # Si c'était la liste vide la nouvelle liste correspond au nouveau noeud if (ldc is None): ldc = lastNode # Sinon on insert le nouveau noeud à la fin de la liste else: # On parcourt la liste jusqu'au dernier noeud noeud = ldc while getSuivantLDC(noeud) != None: noeud = getSuivantLDC(noeud) # On met à jour le noeud suivant # Le noeud suivant de lastNode reste None, # On modifie le noeud suivant du dernier noeud de la liste setSuivantLDC(noeud,lastNode) # Le noeud precedent de lastNode est le dernier noeud de la liste setPrecedentLDC(lastNode,noeud) return ldc
def insererPlaceLDC(ldc: list, val: int, p: int) ‑> list
-
Insère le noeud contenant la valeur val juste après le noeud d'indice p dans la liste doublement chainée ldc;
Le premier noeud a pour indice 0.
Paramètres
* ldc -- liste doublement chainée. * val -- valeur du noeud à insérer. * p -- indice de la position précédent l'insertion.
Sorties
* La liste doublement chainée modifiée avec le noeud supplémentaire.
Expand source code
def insererPlaceLDC(ldc:list,val:int,p:int)->list: """Insère le noeud contenant la valeur **val** juste après le noeud d'indice **p** dans la liste doublement chainée **ldc**; Le premier noeud a pour indice 0. **Paramètres** * ldc -- liste doublement chainée. * val -- valeur du noeud à insérer. * p -- indice de la position précédent l'insertion. **Sorties** * La liste doublement chainée modifiée avec le noeud supplémentaire. """ pass assert (ldc is None) or (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC assert isinstance(val,int),warnString(str(val)+" devrait être un entier") assert isinstance(p,int),warnString(str(p)+" devrait être un entier") assert (ldc is None and p==0) or (p in range(longueurLDC(ldc))),warnString(str(p)+", la position du noeud doit être comprise entre 0 et "+str(longueurLDC(ldc)-1)) # On crée un nouveau noeud avec la valeur val newNode = creerNoeudLDC(val,None,None) # Si c'était la liste vide la nouvelle liste correspond au nouveau noeud if (ldc is None): return newNode # Sinon on insert le nouveau noeud à l'indice p else: # On parcourt la liste jusqu'au noeud p noeud = ldc if (p == 0): ldc = insererDebutLDC(ldc,val) else: indice = 0 while indice != p: noeud = getSuivantLDC(noeud) indice += 1 setSuivantLDC(newNode,noeud) setPrecedentLDC(newNode,getPrecedentLDC(noeud)) setSuivantLDC(getPrecedentLDC(noeud),newNode) setPrecedentLDC(noeud,newNode) return ldc
def list2LDC(listPython: list) ‑> list
-
Renvoie la liste doublement chainée contenant dans le même ordre les éléments de la liste Python listPython;
Renvoie None si listePython vaut []
Paramètres
* listePython -- liste Python.
Sorties
* Une liste doublement chainée avec les éléments du tableau passé en paramètre.
Expand source code
def list2LDC(listPython:list)->list: """Renvoie la liste doublement chainée contenant dans le même ordre les éléments de la liste Python **listPython**; Renvoie **None** si **listePython** vaut **[]** **Paramètres** * listePython -- liste Python. **Sorties** * Une liste doublement chainée avec les éléments du tableau passé en paramètre. """ pass assert isinstance(listPython,list),warnString(str(listPython)+" devrait être une liste") assert (all(isinstance(element,int) for element in listPython)),warnString("Tous les éléments de "+str(listPython)+" devrait être des entiers") # msg issu de estNoeudLDC if listPython == []: outLDC = None else: # listPython != [] : outLDC = creerNoeudLDC(listPython[0],None,None) k = 1 while k != len(listPython): outLDC = insererFinLDC(outLDC,listPython[k]) k += 1 return outLDC
def longueurLDC(ldc: list) ‑> int
-
Renvoie la longueur de la liste doublement chainée ldc.
Paramètres
* ldc -- liste doublement chainée.
Sorties
* Un entier avec le nombre d'éléments de la liste doublement chainée. 0 si None.
Expand source code
def longueurLDC(ldc:list)->int: """Renvoie la longueur de la liste doublement chainée **ldc**. **Paramètres** * ldc -- liste doublement chainée. **Sorties** * Un entier avec le nombre d'éléments de la liste doublement chainée. 0 si None. """ pass assert (ldc == None) or estNoeudLDC(ldc)# msg issu de estNoeudLDC - Fonction recursive donc on ne vérifie que le premier element. # longueur = 0 noeud = ldc while noeud != None: longueur +=1 noeud = getSuivantLDC(noeud) return longueur
def setPrecedentLDC(n: list, precedent: list) ‑> list
-
Modifie/Attribue le noeud precedent du noeud n d'une liste doublement chainée.
Paramètres
* n -- noeud de liste doublement chainée. * precedent -- le noeud précédent à attribuer. None en début de liste.
Expand source code
def setPrecedentLDC(n:list,precedent:list)->list: """Modifie/Attribue le noeud **precedent** du noeud **n** d'une liste doublement chainée. **Paramètres** * n -- noeud de liste doublement chainée. * precedent -- le noeud précédent à attribuer. None en début de liste. """ pass assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud précédent") assert (estNoeudLDC(n)) # msg issu de estNoeudLDC assert (estNoeudLDC(precedent)) # msg issu de estNoeudLDC assert isinstance(precedent,list) or precedent==None # msg issu de estNoeudLDC # Le precedent de n est maintenant precedent n[1] = precedent
def setSuivantLDC(n: list, suivant: list) ‑> list
-
Modifie/Attribue le noeud suivant du noeud n d'une liste doublement chainée.
Paramètres
* n -- noeud de liste doublement chainée. * suivant -- le noeud suivant à attribuer. None en fin de liste.
Expand source code
def setSuivantLDC(n:list,suivant:list)->list: """Modifie/Attribue le noeud **suivant** du noeud **n** d'une liste doublement chainée. **Paramètres** * n -- noeud de liste doublement chainée. * suivant -- le noeud suivant à attribuer. None en fin de liste. """ pass assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir un noeud suivant") assert (estNoeudLDC(n)),warnString("La liste doit être un noeud LDC") assert (estNoeudLDC(suivant)),warnString("Le noeud suivant doit être un noeud LDC") assert isinstance(suivant,list) or suivant==None,warnString("suivant doit être une liste ou None") n[2] = suivant
def setValLDC(n: list, val: int) ‑> int
-
Modifie/Attribue la valeur val du/au noeud n d'une liste doublement chainée.
Paramètres
* n -- noeud de liste doublement chainée. * val -- valeur à attribuer au noeud de la liste doublement chainée.
Expand source code
def setValLDC(n:list,val:int)->int: """Modifie/Attribue la valeur **val** du/au noeud **n** d'une liste doublement chainée. **Paramètres** * n -- noeud de liste doublement chainée. * val -- valeur à attribuer au noeud de la liste doublement chainée. """ pass assert (n is not None),warnString("La liste doit être un vrai noeud et pas None pour avoir une valeur") assert estNoeudLDC(n),warnString("La liste doit être un noeud LDC") assert isinstance(val,int),warnString(str(val)+" devrait être un entier") n[0] = val
def supprimerDebutLDC(ldc: list) ‑> list
-
Supprime le premier noeud d'une liste doublement chainée ldc.
Paramètres
* ldc -- liste doublement chainée.
Sorties
* La liste doublement chainée modifiée dont le premier noeud a été supprimé.
Expand source code
def supprimerDebutLDC(ldc:list)->list: """Supprime le premier noeud d'une liste doublement chainée **ldc**. **Paramètres** * ldc -- liste doublement chainée. **Sorties** * La liste doublement chainée modifiée dont le premier noeud a été supprimé. """ pass assert ldc is not None,warnString("On ne peut supprimer le premier élément de la liste vide") assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC # On commence avec le second noeud de ldc firstNode = getSuivantLDC(ldc) # On fait pointer le noeud précédent du second sur None setPrecedentLDC(firstNode,None) return firstNode
def supprimerFinLDC(ldc: list) ‑> list
-
Supprime le dernier noeud d'une liste doublement chainée ldc.
Paramètres
* ldc -- liste doublement chainée.
Sorties
* La liste doublement chainée modifiée dont le dernier noeud a été supprimé.
Expand source code
def supprimerFinLDC(ldc:list)->list: """Supprime le dernier noeud d'une liste doublement chainée **ldc**. **Paramètres** * ldc -- liste doublement chainée. **Sorties** * La liste doublement chainée modifiée dont le dernier noeud a été supprimé. """ pass assert ldc is not None,warnString("On ne peut supprimer le dernier élément de la liste vide") assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC # On parcourt la liste jusqu'au dernier noeud lastNode = ldc while getSuivantLDC(lastNode) != None: lastNode = getSuivantLDC(lastNode) # On récupère l'avant dernier noeud de la liste setSuivantLDC(getPrecedentLDC(lastNode),None) return ldc
def supprimerPlaceLDC(ldc: list, p: int) ‑> list
-
Supprime le noeud d'indice p de la liste doublement chainée ldc;
Le premier noeud a pour indice 0.
Paramètres
* ldc -- liste doublement chainée. * p -- indice de la position à supprimer.
Sorties
* La liste doublement chainée modifiée avec le noeud supplémentaire.
Expand source code
def supprimerPlaceLDC(ldc:list,p:int)->list: """Supprime le noeud d'indice **p** de la liste doublement chainée **ldc**; Le premier noeud a pour indice 0. **Paramètres** * ldc -- liste doublement chainée. * p -- indice de la position à supprimer. **Sorties** * La liste doublement chainée modifiée avec le noeud supplémentaire. """ pass assert ldc is not None,warnString("On ne peut rien supprimer de la liste vide") assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC assert isinstance(p,int),warnString(str(p)+" devrait être un entier") assert p in range(longueurLDC(ldc)),warnString(str(p)+", la position du noeud doit être comprise entre 0 et "+str(longueurLDC(ldc)-1)) noeudToDelete = ldc if (p == 0): ldc = supprimerDebutLDC(ldc) elif (p == longueurLDC(ldc)-1): ldc = supprimerFinLDC(ldc) else: indice = 0 while indice != p: noeudToDelete = getSuivantLDC(noeudToDelete) indice +=1 setSuivantLDC(getPrecedentLDC(noeudToDelete),getSuivantLDC(noeudToDelete)) setPrecedentLDC(getSuivantLDC(noeudToDelete),getPrecedentLDC(noeudToDelete)) return ldc
def supprimerValLDC(ldc: list, val: int) ‑> list
-
Supprime le premier noeud de valeur val de la liste doublement chainée ldc;
Le premier noeud a pour indice 0.
Paramètres
* ldc -- liste doublement chainée. * val -- valeur à supprimer.
Sorties
* La liste doublement chainée modifiée avec le premier noeud de valeur **val** en moins.
Expand source code
def supprimerValLDC(ldc:list,val:int)->list: """Supprime le premier noeud de valeur **val** de la liste doublement chainée **ldc**; Le premier noeud a pour indice 0. **Paramètres** * ldc -- liste doublement chainée. * val -- valeur à supprimer. **Sorties** * La liste doublement chainée modifiée avec le premier noeud de valeur **val** en moins. """ pass assert ldc is not None,warnString("On ne peut rien supprimer de la liste vide") assert (estNoeudLDC(getPrecedentLDC(ldc)) and estNoeudLDC(getSuivantLDC(ldc))) # msg issu de estNoeudLDC assert isinstance(val,int),warnString(str(val)+" devrait être un entier") # On parcourt la liste pour trouver le premier noeud de valeur val p = 0 currentNode = ldc while getValLDC(currentNode) != val and p != longueurLDC(ldc)-1: currentNode = getSuivantLDC(currentNode) p += 1 # Si p vaut la longueur de la liste alors c'est que le valeur n'y figure pas # On ne supprime que dans le cas contraire if (p != longueurLDC(ldc)-1): ldc = supprimerPlaceLDC(ldc,p) return ldc
def tests_Definitions()
-
Teste les définitions
Expand source code
def tests_Definitions(): """Teste les définitions""" # pour tester les assertions de estNoeudLDC() et de getValLDC() listeVide = creerListeVide() noeudOK = creerNoeudLDC(5,None,None) noeudKO = ['foo',None,None] myTitle("TESTS DEFINITIONS") myTestsTitle("creerNoeudLDC()") print("creerNoeudLDC(7,None,None) : ", creerNoeudLDC(7,None,None)) myAssertTestsTitle("estNoeudLDC() -> test des assertions") try: creerNoeudLDC('foo',None,None) except AssertionError as msg: print(warnString("creerNoeudLDC('foo',None,None) -> "),msg) try: creerNoeudLDC(1,'bar',None) except AssertionError as msg: print(warnString("creerNoeudLDC(1,'bar',None) -> "),msg) try: creerNoeudLDC(1,None,'bar') except AssertionError as msg: print(warnString("creerNoeudLDC(1,None,'bar') -> "),msg) myTestsTitle("estNoeudLDC()") print("Liste vide : ",estNoeudLDC(listeVide)) print("Noeud OK : ",estNoeudLDC(noeudOK)) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("estNoeudLDC() -> test des assertions") try: print(warnString("noeudKO : "+str(noeudKO))) estNoeudLDC(noeudKO) except AssertionError as msg: print(warnString("estNoeudLDC(noeudKO) -> "),msg)
def tests_Getters()
-
Teste les getters
Expand source code
def tests_Getters(): """Teste les getters""" # pour tester les assertions de getValLDC() listeVide = creerListeVide() noeudOK = creerNoeudLDC(5,None,None) noeudKO = ['foo',None,None] # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,noeud0,None) setSuivantLDC(noeud0,noeud1) myTitle("TESTS GETTERS") myTestsTitle("Les noeuds") print("noeud0 : ",noeud0) print("estNoeudLDC(noeud0) ? : ",estNoeudLDC(noeud0)) print("noeud1 : ",noeud1) print("estNoeudLDC(noeud1) ? : ",estNoeudLDC(noeud1)) print("noeudOK : ",noeudOK) print("estNoeudLDC(noeudOK) ? : ",estNoeudLDC(noeudOK)) myTestsTitle("getValLDC()") print("getValLDC(noeud0) : ",getValLDC(noeud0)) print("getValLDC(noeud1) : ",getValLDC(noeud1)) print("getValLDC(noeudOK) : ",getValLDC(noeudOK)) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("getValLDC() -> test des assertions") try: getValLDC(listeVide) except AssertionError as msg: print(warnString("getValLDC(listeVide) -> "),msg) try: print(warnString("noeudKO : "+str(noeudKO))) getValLDC(noeudKO) except AssertionError as msg: print(warnString("getValLDC(noeudKO) ->"),msg) myTestsTitle("getPrecedentLDC()") print("getPrecedentLDC(noeud0) : ",getPrecedentLDC(noeud0)) print("getPrecedentLDC(noeud1) : ",getPrecedentLDC(noeud1)) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("getPrecedentLDC() -> test des assertions") try: getPrecedentLDC(listeVide) except AssertionError as msg: print(warnString("getPrecedentLDC(listeVide) -> "),msg) print(sepSymb('-')) myTestsTitle("getSuivantLDC()") print("getSuivantLDC(noeud0) : ",getSuivantLDC(noeud0)) print("getSuivantLDC(noeud1) : ",getSuivantLDC(noeud1)) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("getSuivantLDC() -> test des assertions") try: getSuivantLDC(listeVide) except AssertionError as msg: print(warnString("getSuivantLDC(listeVide) -> "),msg)
def tests_LDC2List()
-
Teste la fonction LDC2List()
Expand source code
def tests_LDC2List(): """Teste la fonction LDC2List()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud3 = creerNoeudLDC(3,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud3) setPrecedentLDC(noeud3,noeud2) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("LDC2List()") print("Liste Vide : ",listeVide) print("LDC2List(listeVide) : ",LDC2List(listeVide)) print(sepSymb("-")) print("Liste ldc : ",ldc) print("LDC2List(ldc) : ",LDC2List(ldc)) # Pour tester les assertions myAssertTestsTitle("LDC2List() -> test assertion") try: print(warnString("ldcKO ->"+str(ldcKO))) LDC2List(ldcKO) except AssertionError as msg: print(warnString("LDC2List(ldcKO) ->"),msg)
def tests_List2LDC()
-
Teste la fonction list2LDC()
Expand source code
def tests_List2LDC(): """Teste la fonction list2LDC()""" listeVide = [] ldc = [0,1,2,3] # Pour lever les erreurs d'assertions ldcKO = 'string' ldcKObis = [0,'1',2] myTestsTitle("LDC2List()") print("Liste Vide : ",listeVide) print("list2LDC(listeVide) : ",list2LDC(listeVide)) print(sepSymb("-")) print("Liste ldc : ",ldc) print("list2LDC(ldc) : ",list2LDC(ldc)) # Pour tester les assertions myAssertTestsTitle("lsit2LDC() -> test assertion") try: print(warnString("ldcKO ->"+str(ldcKO))) list2LDC(ldcKO) except AssertionError as msg: print(warnString("list2LDC(ldcKO) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldcKObis ->"+str(ldcKObis))) list2LDC(ldcKObis) except AssertionError as msg: print(warnString("list2LDC(ldcKObis) ->"),msg)
def tests_MainP1()
-
Gère les tests de la partie 1
Expand source code
def tests_MainP1(): """Gère les tests de la partie 1""" # On récupère la date au début du traitement start_time = datetime.now() os.system("clear") choice = '' while choice not in ['1','2','3','4']: os.system("clear") myTitle("PARTIE 1 - TESTS") choice = input(""" Quels tests voulez-vous lancer ? ---> 1 : Les définitions ---> 2 : Les getters ---> 3 : Les setters ---> 4 : Les fonctions """) os.system("clear") if (choice == '1'): tests_Definitions() elif (choice == '2'): tests_Getters() elif (choice == '3'): tests_Setters() elif (choice == '4'): functionChoice = '' while functionChoice not in ['1','2','3','4','5','6','7','8','9','10','11','12']: os.system("clear") myTitle("PARTIE 1 - TESTS DES FONCTIONS") functionChoice = input(""" Quelle(s) fonction(s) voulez-vous tester ? ---> 1 : longueurLDC() ---> 2 : insererDebutLDC() ---> 3 : insererFinLDC() ---> 4 : supprimerDebutLDC() ---> 5 : supprimerFinLDC() ---> 6 : accesLDC() ---> 7 : insererPlaceLDC() ---> 8 : supprimerPlaceLDC() ---> 9 : supprimerValLDC() ---> 10 : LDC2List() ---> 11 : list2LDC() ---> 12 : Toutes les fonctions """) os.system("clear") if functionChoice in str(range(1,11)): myTitle("TESTS FONCTIONS") if (functionChoice == '1'): tests_longueurLDC() elif (functionChoice == '2'): tests_insererDebutLDC() elif (functionChoice == '3'): tests_insererFinLDC() elif (functionChoice == '4'): tests_supprimerDebutLDC() elif (functionChoice == '5'): tests_supprimerFinLDC() elif (functionChoice == '6'): tests_accesLDC() elif (functionChoice == '7'): tests_insererPlaceLDC() elif (functionChoice == '8'): tests_supprimerPlaceLDC() elif (functionChoice == '9'): tests_supprimerValLDC() elif (functionChoice == '10'): tests_LDC2List() elif (functionChoice == '11'): tests_List2LDC() elif (functionChoice == '12'): myTitle("TESTS DE TOUTES LES FONCTIONS") tests_longueurLDC() tests_insererDebutLDC() tests_insererFinLDC() tests_supprimerDebutLDC() tests_supprimerFinLDC() tests_accesLDC() tests_insererPlaceLDC() tests_supprimerPlaceLDC() tests_supprimerValLDC() tests_LDC2List() tests_List2LDC() # On évalue le temps de traitement end_time = datetime.now() # On affiche timeShow(end_time-start_time) if __name__ == "__main__": restart = '' while restart not in ['o','n']: genericTitle("UN AUTRE TEST ?",'#') restart = input("Taper o ou n pour relancer le script --> ") if restart == 'o': tests_MainP1()
def tests_MainP1New()
-
Gère les tests de la partie 1
Expand source code
def tests_MainP1New(): """Gère les tests de la partie 1""" # On récupère la date au début du traitement start_time = datetime.now() os.system("clear") tests_Definitions() tests_Getters() tests_Setters() tests_longueurLDC() tests_insererDebutLDC() tests_insererFinLDC() tests_supprimerDebutLDC() tests_supprimerFinLDC() tests_accesLDC() tests_insererPlaceLDC() tests_supprimerPlaceLDC() tests_supprimerValLDC() tests_LDC2List() tests_List2LDC() # On évalue le temps de traitement end_time = datetime.now() # On affiche timeShow(end_time-start_time)
def tests_Setters()
-
Teste les setters
Expand source code
def tests_Setters(): """Teste les setters""" # pour tester les assertions de getValLDC() listeVide = creerListeVide() noeudOK = creerNoeudLDC(5,None,None) noeudKO = ['foo',None,None] # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,noeud0,None) setSuivantLDC(noeud0,noeud1) noeud2 = creerNoeudLDC(2,noeud1,None) setSuivantLDC(noeud1,noeud2) noeudTestSetters = creerNoeudLDC(9,None,None) myTitle("SETTERS") myTestsTitle("Les noeuds d'origine") print("noeud0 : ",noeud0) print("noeud1 : ",noeud1) print("noeud2 : ",noeud2) myTestsTitle("setValLDC()") print("noeud0 : ",noeud0) setValLDC(noeud0,10) print("setValLDC(noeud0,10) : ",noeud0) print("noeud1 : ",noeud1) setValLDC(noeud1,11) print("setValLDC(noeud1,11) : ",noeud1) print("noeud2 : ",noeud2) setValLDC(noeud2,12) print("setValLDC(noeud2,12) : ",noeud2) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("setValLDC() -> test des assertions") try: setValLDC(listeVide,2) except AssertionError as msg: print(warnString("setValLDC(listeVide,2) ->"),msg) try: print(warnString("noeudKO : "+str(noeudKO))) setValLDC(noeudKO,2) except AssertionError as msg: print(warnString("setValLDC(noeudKO,2) ->"),msg) try: setValLDC(noeudOK,'bar') except AssertionError as msg: print(warnString("setValLDC(noeudOK,'bar') ->"),msg) myTestsTitle("setPrecedentLDC(noeudTestSetters,[99,None,None])") print("noeudTestSetters avant :",noeudTestSetters) setPrecedentLDC(noeudTestSetters,[99,None,None]) print("noeudTestSetters après :",noeudTestSetters) print(sepEqual("reinitialisation des valeurs")) setPrecedentLDC(noeudTestSetters,None) print("noeudTestSetters réinitialisé :",noeudTestSetters ) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("setPrecedentLDC() -> test des assertions") try: setPrecedentLDC(listeVide,noeudOK) except AssertionError as msg: print(warnString("setPrecedentLDC(listeVide,noeudOK) ->"),msg) try: print(warnString("noeudKO : "+str(noeudKO))) setPrecedentLDC(noeudTestSetters,noeudKO) except AssertionError as msg: print(warnString("setPrecedentLDC(noeudTestSetters,noeudKO) ->"),msg) try: print(warnString("noeudKO : "+str(noeudKO))) setPrecedentLDC(noeudKO,noeudOK) except AssertionError as msg: print(warnString("setPrecedentLDC(noeudKO,noeudOK) ->"),msg) try: setPrecedentLDC(noeudTestSetters,'bar') except AssertionError as msg: print(warnString("setPrecedentLDC(noeudTestSetters,'bar') ->"),msg) myTestsTitle("setSuivantLDC(noeudTestSetters,[99,None,None])") setSuivantLDC(noeudTestSetters,[99,None,None]) print("noeudTestSetters après :",noeudTestSetters) print(sepEqual("reinitialisation des valeurs")) setSuivantLDC(noeudTestSetters,None) print("noeudTestSetters réinitialisé :",noeudTestSetters) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("setSuivantLDC() -> test des assertions") try: setSuivantLDC(listeVide,noeudOK) except AssertionError as msg: print(warnString("setSuivantLDC(listeVide,noeudOK) ->"),msg) try: setSuivantLDC(noeudTestSetters,noeudKO) except AssertionError as msg: print(warnString("setSuivantLDC(noeudTestSetters,noeudKO) ->"),msg) try: print(warnString("noeudKO : "+str(noeudKO))) setSuivantLDC(noeudKO,noeudOK) except AssertionError as msg: print(warnString("setSuivantLDC(noeudKO,noeudOK) ->"),msg) try: setSuivantLDC(noeudTestSetters,'bar') except AssertionError as msg: print(warnString("setSuivantLDC(noeudTestSetters,'bar') ->"),msg)
def tests_accesLDC()
-
Teste la fonction accessLDC()
Expand source code
def tests_accesLDC(): """Teste la fonction accessLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("accesLDC()") print("Liste ldc : ",ldc) print("accesLDC(ldc,0) : ",accesLDC(ldc,0)) print("accesLDC(ldc,1) : ",accesLDC(ldc,1)) print("accesLDC(ldc,2) : ",accesLDC(ldc,2)) # Pour tester les assertions myAssertTestsTitle("accesLDC() -> test assertion") try: accesLDC(listeVide,3) except AssertionError as msg: print(warnString("accesLDC(listeVide,3) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldcKO ->"+str(ldcKO))) accesLDC(ldcKO,3) except AssertionError as msg: print(warnString("accesLDC(ldcKO,3) ->"),msg) try: accesLDC(ldc,'foo') except AssertionError as msg: print(warnString("accesLDC(ldc,'foo') ->"),msg) # p doit faire partie des indices possibles pour la liste ldc, ici max 2 try: accesLDC(ldc,3) except AssertionError as msg: print(warnString("accesLDC(ldc,3) ->"),msg)
def tests_insererDebutLDC()
-
Teste la fonction insererDebutLDC()
Expand source code
def tests_insererDebutLDC(): """Teste la fonction insererDebutLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("insererDebutLDC()") print("Liste Vide : ",listeVide) listeVide = insererDebutLDC(listeVide,999) print("Liste Vide après insererDebutLDC(listeVide,999) : ",listeVide) print(sepSymb("-")) print("Liste ldc avant : ",ldc) ldc = insererDebutLDC(ldc,999) print("Liste ldc après insererDebutLDC(ldc,999) : ",ldc) # réinitialisation de ldc noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Tests pour lever les erreurs d'assertion myAssertTestsTitle("insererDebutLDC() -> test des assertions") try: print(warnString("ldcKO ->"+str(ldcKO))) ldcKO = insererDebutLDC(ldcKO,999) except AssertionError as msg: print(warnString("insererDebutLDC(ldcKO,999) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldc ->"+str(ldc))) ldc = insererDebutLDC(ldc,'string') except AssertionError as msg: print(warnString("insererDebutLDC(ldc,'string') ->"),msg)
def tests_insererFinLDC()
-
Teste la fonction insererFinLDC()
Expand source code
def tests_insererFinLDC(): """Teste la fonction insererFinLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("insererFinLDC()") print("Liste Vide : ",listeVide) listeVide = insererFinLDC(listeVide,888) print("Liste Vide après insererFinLDC(listeVide,888) : ",listeVide) print(sepSymb("-")) print("Liste ldc avant : ",ldc) ldc = insererFinLDC(ldc,888) print("Liste ldc après insererFinLDC(ldc,888) : ",ldc) # réinitialisation de ldc noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Tests pour lever les erreurs d'assertion myAssertTestsTitle("insererFinLDC() -> test des assertions") try: print(warnString("ldcKO ->"+str(ldcKO))) ldcKO = insererDebutLDC(ldcKO,888) except AssertionError as msg: print(warnString("insererFinLDC(ldcKO,888) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldc ->"+str(ldc))) ldc = insererDebutLDC(ldc,'string') except AssertionError as msg: print(warnString("insererFinLDC(ldc,'string') ->"),msg)
def tests_insererPlaceLDC()
-
Teste la fonction inserePlaceLDC()
Expand source code
def tests_insererPlaceLDC(): """Teste la fonction inserePlaceLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("insererPlaceLDC()") print("Liste Vide : ",listeVide) listeVide = insererPlaceLDC(listeVide,888,0) print("Liste Vide après : ",listeVide) print("Liste ldc : ",ldc) ldc=insererPlaceLDC(ldc,999,0) print("insererPlaceLDC(ldc,999,0) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 ldc=insererPlaceLDC(ldc,999,1) print("insererPlaceLDC(ldc,999,1) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 ldc=insererPlaceLDC(ldc,999,2) print("insererPlaceLDC(ldc,999,2) : ",ldc) # On réinitialise pour les tests d'assertions noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour tester les assertions myAssertTestsTitle("insererPlaceLDC() -> test assertion") try: print(warnString("ldcKO ->"+str(ldcKO))) insererPlaceLDC(ldcKO,999,0) except AssertionError as msg: print(warnString("insererPlaceLDC(ldcKO,999,0) ->"),msg) print(warnString(sepSymb("-"))) try: insererPlaceLDC(ldc,'foo',0) except AssertionError as msg: print(warnString("insererPlaceLDC(ldc,'foo',0) ->"),msg) try: insererPlaceLDC(ldc,999,'bar') except AssertionError as msg: print(warnString("insererPlaceLDC(ldc,999,'bar') ->"),msg) try: insererPlaceLDC(ldc,999,3) except AssertionError as msg: print(warnString("insererPlaceLDC(ldc,999,3) ->"),msg)
def tests_longueurLDC()
-
Teste la fonction longueurLDC()
Expand source code
def tests_longueurLDC(): """Teste la fonction longueurLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("longueurLDC()") print("Liste Vide : ",listeVide) print("longueurLDC(listeVide) : ",longueurLDC(listeVide)) print("Liste ldc : ",ldc) print("longueurLDC(ldc) : ",longueurLDC(ldc)) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("longueurLDC() -> test des assertions") try: print(warnString("ldcKO ->"+str(ldcKO))) longueurLDC(ldcKO) except AssertionError as msg: print(warnString("longueurLDC(ldcKO) ->"),msg)
def tests_supprimerDebutLDC()
-
Teste la fonction supprimerDebutLDC()
Expand source code
def tests_supprimerDebutLDC(): """Teste la fonction supprimerDebutLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("supprimerDebutLDC()") print("Liste ldc avant : ",ldc) ldc = supprimerDebutLDC(ldc) print("Liste ldc après supprimerDebutLDC(ldc) : ",ldc) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("supprimerDebutLDC() -> test des assertions") try: listeVide = supprimerDebutLDC(listeVide) except AssertionError as msg: print(warnString("supprimerDebutLDC(listeVide) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldcKO ->"+str(ldcKO))) ldcKO = supprimerDebutLDC(ldcKO) except AssertionError as msg: print(warnString("supprimerDebutLDC(ldcKO) ->"),msg)
def tests_supprimerFinLDC()
-
Teste la fonction supprimerFinLDC()
Expand source code
def tests_supprimerFinLDC(): """Teste la fonction supprimerFinLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("supprimerFinLDC()") print("Liste ldc avant : ",ldc) ldc = supprimerFinLDC(ldc) print("Liste ldc après supprimerFinLDC(ldc) : ",ldc) # Tests pour lever les erreurs d'assertion myAssertTestsTitle("supprimerFinLDC() -> test des assertions") try: listeVide = supprimerFinLDC(listeVide) except AssertionError as msg: print(warnString("supprimerFinLDC(listeVide) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldcKO ->"+str(ldcKO))) ldcKO = supprimerFinLDC(ldcKO) except AssertionError as msg: print(warnString("supprimerFinLDC(ldcKO) ->"),msg)
def tests_supprimerPlaceLDC()
-
Teste la fonction supprimerPlaceLDC()
Expand source code
def tests_supprimerPlaceLDC(): """Teste la fonction supprimerPlaceLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud3 = creerNoeudLDC(3,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud3) setPrecedentLDC(noeud3,noeud2) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("supprimerPlaceLDC()") print("Liste ldc : ",ldc) print(sepSymb("-")) ldc=supprimerPlaceLDC(ldc,0) print("supprimerPlaceLDC(ldc,0) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud3 = creerNoeudLDC(3,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud3) setPrecedentLDC(noeud3,noeud2) ldc = noeud0 ldc=supprimerPlaceLDC(ldc,1) print("supprimerPlaceLDC(ldc,1) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud3 = creerNoeudLDC(3,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud3) setPrecedentLDC(noeud3,noeud2) ldc = noeud0 ldc=supprimerPlaceLDC(ldc,2) print("supprimerPlaceLDC(ldc,2) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud3 = creerNoeudLDC(3,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud3) setPrecedentLDC(noeud3,noeud2) ldc = noeud0 ldc=supprimerPlaceLDC(ldc,3) print("supprimerPlaceLDC(ldc,3) : ",ldc) # On réinitialise pour les tests d'assertions noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud3 = creerNoeudLDC(3,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud3) setPrecedentLDC(noeud3,noeud2) ldc = noeud0 # Pour tester les assertions myAssertTestsTitle("supprimerPlaceLDC() -> test assertion") try: supprimerPlaceLDC(listeVide,0) except AssertionError as msg: print(warnString("supprimerPlaceLDC(listeVide,0) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldcKO ->"+str(ldcKO))) supprimerPlaceLDC(ldcKO,0) except AssertionError as msg: print(warnString("supprimerPlaceLDC(ldcKO,0) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldc ->"+str(ldc))) supprimerPlaceLDC(ldc,'foo') except AssertionError as msg: print(warnString("supprimerPlaceLDC(ldc,'foo') ->"),msg) try: supprimerPlaceLDC(ldc,4) except AssertionError as msg: print(warnString("supprimerPlaceLDC(ldc,4) ->"),msg)
def tests_supprimerValLDC()
-
Teste la fonction supprimerValLDC()
Expand source code
def tests_supprimerValLDC(): """Teste la fonction supprimerValLDC()""" listeVide = creerListeVide() # On crée des noeuds pour faire une liste de noeuds noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud1bis = creerNoeudLDC(1,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud1bis) setPrecedentLDC(noeud1bis,noeud2) ldc = noeud0 # Pour lever les erreurs d'assertions ldcKO = ['string',noeud1,noeud2] myTestsTitle("supprimerValLDC()") print("Liste ldc : ",ldc) print(sepSymb("-")) ldc=supprimerPlaceLDC(ldc,0) print("supprimerValLDC(ldc,0) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud1bis = creerNoeudLDC(1,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud1bis) setPrecedentLDC(noeud1bis,noeud2) ldc = noeud0 ldc=supprimerValLDC(ldc,1) print("supprimerValLDC(ldc,1) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud1bis = creerNoeudLDC(1,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud1bis) setPrecedentLDC(noeud1bis,noeud2) ldc = noeud0 ldc=supprimerValLDC(ldc,2) print("supprimerValLDC(ldc,2) : ",ldc) # On réinitialise noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud1bis = creerNoeudLDC(1,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud1bis) setPrecedentLDC(noeud1bis,noeud2) ldc = noeud0 ldc=supprimerValLDC(ldc,3) print("supprimerValLDC(ldc,3) : ",ldc) # On réinitialise pour les tests d'assertions noeud0 = creerNoeudLDC(0,None,None) noeud1 = creerNoeudLDC(1,None,None) noeud2 = creerNoeudLDC(2,None,None) noeud1bis = creerNoeudLDC(1,None,None) setSuivantLDC(noeud0,noeud1) setPrecedentLDC(noeud1,noeud0) setSuivantLDC(noeud1,noeud2) setPrecedentLDC(noeud2,noeud1) setSuivantLDC(noeud2,noeud1bis) setPrecedentLDC(noeud1bis,noeud2) ldc = noeud0 # Pour tester les assertions myAssertTestsTitle("supprimerPlaceLDC() -> test assertion") try: supprimerValLDC(listeVide,0) except AssertionError as msg: print(warnString("supprimerValLDC(listeVide,0) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldcKO ->"+str(ldcKO))) supprimerValLDC(ldcKO,0) except AssertionError as msg: print(warnString("supprimerValLDC(ldcKO,0) ->"),msg) print(warnString(sepSymb("-"))) try: print(warnString("ldc ->"+str(ldc))) supprimerValLDC(ldc,'foo') except AssertionError as msg: print(warnString("supprimerValLDC(ldc,'foo') ->"),msg)