21-01-2012, 01:06 PM
(Modification du message : 21-01-2012, 01:17 PM par Sephi-Chan.)
coucou,
certaines de mes fonctions produisent des chaines de caractères.
Pour mes tests automatisés, je faisais une simple comparaison entre le résultat et l'attendu, et je me débrouillais pour voir où était la différence.
Sauf que j'ai commencé a avoir des chaines assez longues (genre des logs) et c'est alors assez compliqué d'identifier à partir d'où ça déconne...
l'idée :
j'ai deux chaines $expected et $r
j'affiche les deux côte à côte. Pour comparer je veux quand j'affiche $expected mettre en rouge la partie qui diverge de $r
exemple
$expected = "totototototototototo";
$r = "tototutututi";
devient
$expected = "totototototototototo";
$r = "tototutututi";
J'ai donc cherché sans grand succès une méthode qui me permette d'identifier le premier caractère déconnant.
De fait j'ai pondu mon propre code et j'aimerais juste savoir si ca vous parait bien, si il y avait plus élégant ou si ça existait déjà.
certaines de mes fonctions produisent des chaines de caractères.
Pour mes tests automatisés, je faisais une simple comparaison entre le résultat et l'attendu, et je me débrouillais pour voir où était la différence.
Sauf que j'ai commencé a avoir des chaines assez longues (genre des logs) et c'est alors assez compliqué d'identifier à partir d'où ça déconne...
l'idée :
j'ai deux chaines $expected et $r
j'affiche les deux côte à côte. Pour comparer je veux quand j'affiche $expected mettre en rouge la partie qui diverge de $r
exemple
$expected = "totototototototototo";
$r = "tototutututi";
devient
$expected = "totototototototototo";
$r = "tototutututi";
J'ai donc cherché sans grand succès une méthode qui me permette d'identifier le premier caractère déconnant.
De fait j'ai pondu mon propre code et j'aimerais juste savoir si ca vous parait bien, si il y avait plus élégant ou si ça existait déjà.
if ( strcmp($expected, $r) )
{
$splitexpected = str_split($expected);
$splitr = str_split($r);
foreach( $splitexpected as $i => $c)
{
if ($c != $splitr[$i])
break;
}
$expected = substr($expected,0,$i).'<span class="rouge">'.substr($expected, $i).'</span>';
}