IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Groovy Java Discussion :

Groovy 1.8 & test : affichage étranges des assertions fausses


Sujet :

Groovy Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 39
    Points
    39
    Par défaut Groovy 1.8 & test : affichage étranges des assertions fausses
    En faisant un petit test à vertu pédagogique pour mes collègues, j'ai écris cette assertion dans un test unitaire (sous Grails):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    assert true && false == true || false;
    J'ai été un peu surpris par la sortie de ce test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Assertion failed: //OK
     
    assert true && false == true || false
                |        |       |
                false    false   false // euh?
    donc l'assertion joue bien son rôle mais l'affichage a du mal à suivre:
    true || false == false pour groovy ? et false != false ?

  2. #2
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par guillaume.ame Voir le message
    En faisant un petit test à vertu pédagogique pour mes collègues, j'ai écris cette assertion dans un test unitaire (sous Grails):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    assert true && false == true || false;
    J'ai été un peu surpris par la sortie de ce test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Assertion failed: //OK
     
    assert true && false == true || false
                |        |       |
                false    false   false // euh?
    donc l'assertion joue bien son rôle mais l'affichage a du mal à suivre:
    true || false == false pour groovy ? et false != false ?
    l'absence de parenthèses nous conduit en enfer:
    true && (false == true ) donne false
    false || false donne false
    comme on ne connait jamais les priorités d'opérateur .... ne jamais faire d'expression compliquée sans parenthèses...
    (en fait je ne connais jamais les priorités et je refuse de les apprendre ....)
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    l'absence de parenthèses nous conduit en enfer:
    true && (false == true ) donne false
    false || false donne false
    comme on ne connait jamais les priorités d'opérateur .... ne jamais faire d'expression compliquée sans parenthèses...
    (en fait je ne connais jamais les priorités et je refuse de les apprendre ....)
    Je me doute que les expressions compliquées étaient là juste pour le "show". Personnellement même sans parentesage, je ne comprends pas vraiment pourquoi le test est faux. Pour moi, logiquement chaque opération devrait être testé à la suite l'une de l'autre.

    Peut être qu'en effet, il y a une priorité sur les opérateurs.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    l'absence de parenthèses nous conduit en enfer
    En effet je me suis fais avoir comme un bleu... D'habitude j'évite aussi de me reposer sur la précédence des opérateurs et je m'appuie sur les parenthèses.
    J'évite aussi ce genre de test en faveur d'expression plus simple.

    En l’occurrence je viens de découvrir que l'opérateur '==' est (bizarrement) en milieu de tableau, après les opérateurs arithmétiques mais avant les opérateurs logiques

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test if sur des float
    Par Minuit dans le forum Linux
    Réponses: 2
    Dernier message: 26/03/2005, 13h08
  2. [C#] Affichage foireux des meshs
    Par Ingham dans le forum DirectX
    Réponses: 8
    Dernier message: 29/11/2004, 23h24
  3. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  4. Réponses: 2
    Dernier message: 22/09/2003, 11h23
  5. Affichage étrange sous directGraphic
    Par Cyrik dans le forum DirectX
    Réponses: 7
    Dernier message: 13/09/2003, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo