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