from chainon import Chainon """ Tests unitaires pour vérifier que la classe Chainon est bien implantée """ petite_chaine = Chainon(35) assert str(petite_chaine) == "35 -> None" assert len(petite_chaine) == 1 assert petite_chaine.n_ieme_element(0) == 35 chainon3 = Chainon(45) chainon2 = Chainon(15, chainon3) grande_chaine = Chainon(21, chainon2) assert str(grande_chaine) == "21 -> 15 -> 45 -> None" assert len(grande_chaine) == 3 assert grande_chaine.n_ieme_element(0) == 21 assert grande_chaine.n_ieme_element(1) == 15 assert grande_chaine.n_ieme_element(2) == 45 chaine_concatenee = grande_chaine.concatener(petite_chaine) assert str(chaine_concatenee) == "21 -> 15 -> 45 -> 35 -> None" chaine_inversee = chaine_concatenee.renverser() assert str(chaine_inversee) == "35 -> 45 -> 15 -> 21 -> None" chaine_inversee.inserer(45, 2) assert str(chaine_inversee) == "35 -> 45 -> 45 -> 15 -> 21 -> None" # Tests de suppression à l'indice 0 chaine = Chainon(0) try: chaine.supprimer(0) except ValueError: assert True else: assert False chaine = Chainon(0, Chainon(1)) chaine.supprimer(0) assert str(chaine) == "1 -> None" chaine = Chainon(0, Chainon(1, Chainon(2))) chaine.supprimer(0) assert str(chaine) == "1 -> 2 -> None" chaine3 = chaine_inversee #35 -> 45 -> 45 -> 15 -> 21 -> None chaine3.supprimer(0) assert str(chaine3) == "45 -> 45 -> 15 -> 21 -> None" # Tests de suppression à l'indice 1 chaine = Chainon(0, Chainon(1)) chaine.supprimer(1) assert str(chaine) == "0 -> None" chaine = Chainon(0, Chainon(1, Chainon(2))) chaine.supprimer(1) assert str(chaine) == "0 -> 2 -> None" chaine = Chainon("1er", Chainon("2ème", Chainon("3ème", Chainon("4ème")))) assert str(chaine) == "1er -> 2ème -> 3ème -> 4ème -> None" chaine.supprimer(1) assert str(chaine) == "1er -> 3ème -> 4ème -> None" # Tests de suppression à l'indice 2 chaine = Chainon(0, Chainon(1, Chainon(2))) chaine.supprimer(2) assert str(chaine) == "0 -> 1 -> None" # Tests de suppression à l'indice n #chaine_inversee = 45 -> 45 -> 15 -> 21 -> None chaine_inversee.supprimer(3) assert str(chaine_inversee) == "45 -> 45 -> 15 -> None" chaine_inversee.inserer(21, 3) assert chaine3.occurences(45) == 2 assert chaine3.occurences(15) == 1 assert chaine3.occurences(10) == 0 assert chaine3.premiere_occurence(45) == 0 assert chaine3.premiere_occurence(21) == 3 assert chaine3.premiere_occurence(22) == -1 assert chaine3.identique(chaine3)