unittest: harden string comparison

std::string::compare((char*)nullptr) crashes circa gcc 4.8
in call to strlen(nullptr).
This commit is contained in:
Michael Davidsaver
2021-04-24 10:56:08 -07:00
parent d33672a859
commit a32f82ca35
3 changed files with 58 additions and 6 deletions
+13 -3
View File
@@ -118,10 +118,20 @@ size_t findNextLine(const std::string& s, size_t pos=0u)
return next;
}
testCase _testStrEq(const char *sLHS, const std::string& lhs, const char *sRHS, const std::string& rhs)
testCase _testStrTest(unsigned op, const char *sLHS, const char* rlhs, const char *sRHS, const char* rrhs)
{
testCase ret(lhs==rhs);
ret<<sLHS<<" == "<<sRHS<<"\n";
bool eq;
if(rlhs==rrhs) // same string. handles NULL==NULL
eq = true;
else if(!rlhs ^ !rrhs) // one NULL
eq = false;
else
eq = strcmp(rlhs, rrhs)==0;
testCase ret(eq==op);
ret<<sLHS<<(op ? " == " : " != ")<<sRHS<<"\n";
std::string lhs(rlhs ? rlhs : "<null>");
std::string rhs(rrhs ? rrhs : "<null>");
size_t posL=0u, posR=0u;