risorse | good unit tests
Questa breve parte (la ventunesima; qui l'elenco delle precedenti) risolve un piccolo baco relativo alla presentazione dei valori di tipo const char*.
Il problema si presenta nel momento in cui il framework deve rappresentare un valore nullo per un puntatore di tipo const char*, ad esempio nel caso:
const char* fn() { return nullptr; }
TEST("123")
{
CHECK(fn() != nullptr);
}
L'effetto è catastrofico:
Segmentation fault (core dumped)
Il problema è che la procedura di renderizzazione non gestisce correttamente il caso del puntatore nullo:
std::string toString(const char* value) {
return std::string("\"") + value + "\"";
}
Aggiungendo il trattamento esplicito del caso, il problema sparisce:
std::string toString(const char* value) {
return value ? std::string("\"") + value + "\"" : "<nullptr>";
}
...
/* output:
*
* example.cpp(80) : [error] fn() != nullptr evaluates to <nullptr> != <nullptr>
*/
Pagina modificata il 30/04/2018