def test_est_permutation():
    nbErreur = 0
    #Test avec des matrices de permutation :
    for i in range(1, 20):
        permut = permutation.permutation_aleatoire(i)
        mat = permutation.matrice_permutation(permut)
        if not permutation.est_permutation(mat):
            nbErreur += 1
            print "Erreur lors du test de est_permutation(", mat, ")"
    #Test avec des matrices n'etant pas des matrices de permutation
    listeMatrice = []
    listeMatrice.append([[1, 1, 1, 1], [0, 1, 0, 0], [0, 0, 1, 0],
                         [0, 0, 0, 0]])
    listeMatrice.append([[1, 0, 0], [0, 1, 0], [1, 0, 0]])
    listeMatrice.append([[2, 0], [0, 1]])
    listeMatrice.append([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],
                         [1, 1, 1, 1]])
    listeMatrice.append([[-1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0],
                         [0, 0, 0, 1]])
    listeMatrice.append([[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0],
                         [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]])
    listeMatrice.append([[1, 0, 0], [1, 1, 0], [0, 0, 1]])
    listeMatrice.append([[1, 0, 0, 0], [0, 1, 0], [0, 0, 1]])
    for mat in listeMatrice:
        if permutation.est_permutation(mat):
            nbErreur += 1
            print "Erreur lors du test de est_permutation(", mat, ")"
    return nbErreur
def test_permutation_associee():
    compte = 0
    for i in range(1,20) :
        permut = permutation.permutation_aleatoire(i)
        mat = permutation.matrice_permutation(permut)
        if (permutation.permutation_associee(mat) != permut):
            compte += 1
            print "Erreur lors du test de permutation_associee(", mat, ") \n"
    return compte
def test_permutation_aleatoire():
    compte = 0
    for i in range (1,20):
        permut = permutation.permutation_aleatoire(i)
        if set(permut) != set(range(0,i)):
            print "Erreur lors du test de permutation (", i, ")"
            print "Le resultat est : ", permut, "\n"
            compte += 1
    return compte
def test_matrice_permutation_inverse():
    nbErreur = 0
    for i in range(1,20) :
        permut = permutation.permutation_aleatoire(i)
        mat = permutation.matrice_permutation(permut)
        if mat != permutation.matrice_permutation_inverse(permutation.matrice_permutation_inverse(mat)) or not(permutation.est_carree(permutation.matrice_permutation_inverse(mat))):
            nbErreur += 1
            print "Erreur lors du test de matrice_permutation_inverse(", mat, ")"
    return nbErreur
def test_permutation_associee():
    compte = 0
    for i in range(1, 20):
        permut = permutation.permutation_aleatoire(i)
        mat = permutation.matrice_permutation(permut)
        if (permutation.permutation_associee(mat) != permut):
            compte += 1
            print "Erreur lors du test de permutation_associee(", mat, ") \n"
    return compte
def test_permutation_aleatoire():
    compte = 0
    for i in range(1, 20):
        permut = permutation.permutation_aleatoire(i)
        if set(permut) != set(range(0, i)):
            print "Erreur lors du test de permutation (", i, ")"
            print "Le resultat est : ", permut, "\n"
            compte += 1
    return compte
def test_matrice_permutation_inverse():
    nbErreur = 0
    for i in range(1, 20):
        permut = permutation.permutation_aleatoire(i)
        mat = permutation.matrice_permutation(permut)
        if mat != permutation.matrice_permutation_inverse(
                permutation.matrice_permutation_inverse(mat)) or not (
                    permutation.est_carree(
                        permutation.matrice_permutation_inverse(mat))):
            nbErreur += 1
            print "Erreur lors du test de matrice_permutation_inverse(", mat, ")"
    return nbErreur
def test_produit_permut_d():
    nbErreur = 0
    #teste avec des matrices aleatoires
    for i in range(1,20) :
        mat = permutation.matrice_aleatoire(i)
        permut = permutation.permutation_aleatoire(i)
        matPermutation = permutation.matrice_permutation(permut)
        result = permutation.produit_permut_d(matPermutation,mat)
        matInversePermut = permutation.matrice_permutation_inverse(matPermutation)
        if permutation.produit_permut_d(matInversePermut,result) != mat:
            nbErreur +=1
            print "Erreur lors du test de produit_permut_d(", mat, ",", matPermutation, ")"
    return nbErreur
def test_produit_permut_d():
    nbErreur = 0
    #teste avec des matrices aleatoires
    for i in range(1, 20):
        mat = permutation.matrice_aleatoire(i)
        permut = permutation.permutation_aleatoire(i)
        matPermutation = permutation.matrice_permutation(permut)
        result = permutation.produit_permut_d(matPermutation, mat)
        matInversePermut = permutation.matrice_permutation_inverse(
            matPermutation)
        if permutation.produit_permut_d(matInversePermut, result) != mat:
            nbErreur += 1
            print "Erreur lors du test de produit_permut_d(", mat, ",", matPermutation, ")"
    return nbErreur
def test_est_permutation():
    nbErreur = 0
    #Test avec des matrices de permutation :
    for i in range(1,20) :
        permut = permutation.permutation_aleatoire(i)
        mat = permutation.matrice_permutation(permut)
        if not permutation.est_permutation(mat):
            nbErreur += 1
            print "Erreur lors du test de est_permutation(", mat, ")"
    #Test avec des matrices n'etant pas des matrices de permutation
    listeMatrice = []
    listeMatrice.append([[1,1,1,1],[0,1,0,0],[0,0,1,0],[0,0,0,0]])
    listeMatrice.append([[1,0,0],[0,1,0],[1,0,0]])
    listeMatrice.append([[2,0],[0,1]])
    listeMatrice.append([[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,1,1,1]])
    listeMatrice.append([[-1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]])
    listeMatrice.append([[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]])
    listeMatrice.append([[1,0,0],[1,1,0],[0,0,1]])
    listeMatrice.append([[1,0,0,0],[0,1,0],[0,0,1]])
    for mat in listeMatrice :
        if permutation.est_permutation(mat):
            nbErreur += 1
            print "Erreur lors du test de est_permutation(", mat, ")"
    return nbErreur