(26-08-2013, 05:21 PM)Xenos a écrit : Ok, ça facilite le test d'une situation donnée, d'accord.
Donc, le test unitaire ne sert que si la preuve dit "la fonction est prouvée si et seulement si les tests de base passent". Il me semble quand même malvenu de faire ce test en dehors du code-même de la fonction incriminée... Surtout si on doit se retaper la preuve entière à chaque modification !
Non, le test sert dans tous les cas. On va pas s'amuser à prouver des fonctions qui affichent une vue en chargeant un fichier sur le disque dur, en assignant les variables et en balançant le tout sur la socket ouverte.
Ensuite tu veux dire que tu voudrais mettre les tests d'une fonction DANS la fonction ?
(26-08-2013, 05:21 PM)Xenos a écrit : Pourquoi "this" tuerait la preuve? Supposons le cas d'un langage type PHP: pas de pointeurs (et pas de traitements parallèles, mais ce dernier point pourrait être omis je pense), alors pourquoi "this" tuerait toute tentative de preuve formelle?
Hmmm en fait ça doit bien être possible de prouver qu'une fonction est correcte seulement comme
this
est mutable, il se peut que la même méthode appelée plusieurs fois avec les mêmes arguments renvoie une chose différente à chaque fois : Code :
class truc {
set (x) {
this.x = x
}
plus(y) {
return this.x + y
}
}
t = new truc
t.set(0)
assertEqual(t.plus(3), 3)
t.set(3)
assertEqual(t.plus(3), 6)
t.set(4)
assertEqual(t.plus(3), 7)
Du coup t'as l'air malin pour prouver mathématiquement que c'est correct, il n'y a plus rien à prouver... Du coup le test ci-dessus reste utile pour s'assurer que la classe se comporte bien comme on veut.
assertEqual(t.plus($_GET['machin']), WFT? )