[test] enhance {Verify/Success}OrQuit() and their use in unit test (#6764)

This commit updates `VerifyOrQuit()` and `SuccessOrQuit()` macros to
include the failed condition in the error message that is printed on
a failure (in addition to function name and line number where the
error happened). This commit also changes the second parameter
(`aMessage`) to in these macros to be optional.

This commit also updates unit tests to remove the second `aMessage`
string in cases where the failure can be inferred from the condition
itself.
This commit is contained in:
Abtin Keshavarzian
2021-06-28 11:38:10 -07:00
committed by GitHub
parent 2db3ddca33
commit 57d072d352
36 changed files with 1733 additions and 1864 deletions
+36 -43
View File
@@ -56,20 +56,20 @@ void TestMessage(void)
memset(zeroBuffer, 0, sizeof(zeroBuffer));
instance = static_cast<Instance *>(testInitInstance());
VerifyOrQuit(instance != nullptr, "Null OpenThread instance\n");
VerifyOrQuit(instance != nullptr);
messagePool = &instance->Get<MessagePool>();
Random::NonCrypto::FillBuffer(writeBuffer, kMaxSize);
VerifyOrQuit((message = messagePool->New(Message::kTypeIp6, 0)) != nullptr, "Message::New failed");
SuccessOrQuit(message->SetLength(kMaxSize), "Message::SetLength failed");
VerifyOrQuit((message = messagePool->New(Message::kTypeIp6, 0)) != nullptr);
SuccessOrQuit(message->SetLength(kMaxSize));
message->WriteBytes(0, writeBuffer, kMaxSize);
SuccessOrQuit(message->Read(0, readBuffer, kMaxSize), "Message::Read failed");
VerifyOrQuit(memcmp(writeBuffer, readBuffer, kMaxSize) == 0, "Message compare failed");
VerifyOrQuit(message->CompareBytes(0, readBuffer, kMaxSize), "Message::CompareBytes failed");
VerifyOrQuit(message->Compare(0, readBuffer), "Message::Compare failed");
VerifyOrQuit(message->GetLength() == kMaxSize, "Message::GetLength failed");
SuccessOrQuit(message->Read(0, readBuffer, kMaxSize));
VerifyOrQuit(memcmp(writeBuffer, readBuffer, kMaxSize) == 0);
VerifyOrQuit(message->CompareBytes(0, readBuffer, kMaxSize));
VerifyOrQuit(message->Compare(0, readBuffer));
VerifyOrQuit(message->GetLength() == kMaxSize);
for (uint16_t offset = 0; offset < kMaxSize; offset++)
{
@@ -82,16 +82,16 @@ void TestMessage(void)
message->WriteBytes(offset, &writeBuffer[offset], length);
SuccessOrQuit(message->Read(0, readBuffer, kMaxSize), "Message::Read failed");
VerifyOrQuit(memcmp(writeBuffer, readBuffer, kMaxSize) == 0, "Message compare failed");
VerifyOrQuit(message->Compare(0, writeBuffer), "Message::Compare() failed");
SuccessOrQuit(message->Read(0, readBuffer, kMaxSize));
VerifyOrQuit(memcmp(writeBuffer, readBuffer, kMaxSize) == 0);
VerifyOrQuit(message->Compare(0, writeBuffer));
memset(readBuffer, 0, sizeof(readBuffer));
SuccessOrQuit(message->Read(offset, readBuffer, length), "Message::Read failed");
VerifyOrQuit(memcmp(readBuffer, &writeBuffer[offset], length) == 0, "Message compare failed");
VerifyOrQuit(memcmp(&readBuffer[length], zeroBuffer, kMaxSize - length) == 0, "Message read after length");
SuccessOrQuit(message->Read(offset, readBuffer, length));
VerifyOrQuit(memcmp(readBuffer, &writeBuffer[offset], length) == 0);
VerifyOrQuit(memcmp(&readBuffer[length], zeroBuffer, kMaxSize - length) == 0, "read after length");
VerifyOrQuit(message->CompareBytes(offset, &writeBuffer[offset], length), "Message::CompareBytes() failed");
VerifyOrQuit(message->CompareBytes(offset, &writeBuffer[offset], length));
if (length == 0)
{
@@ -102,11 +102,11 @@ void TestMessage(void)
// `CompareBytes()` correctly fails.
writeBuffer[offset]++;
VerifyOrQuit(!message->CompareBytes(offset, &writeBuffer[offset], length), "CompareBytes() failed");
VerifyOrQuit(!message->CompareBytes(offset, &writeBuffer[offset], length));
writeBuffer[offset]--;
writeBuffer[offset + length - 1]++;
VerifyOrQuit(!message->CompareBytes(offset, &writeBuffer[offset], length), "CompareBytes() failed");
VerifyOrQuit(!message->CompareBytes(offset, &writeBuffer[offset], length));
writeBuffer[offset + length - 1]--;
}
@@ -120,21 +120,21 @@ void TestMessage(void)
readLength = message->ReadBytes(offset, readBuffer, length);
VerifyOrQuit(readLength < length, "Message::ReadBytes() returned longer length");
VerifyOrQuit(readLength == kMaxSize - offset, "Message::Read failed");
VerifyOrQuit(memcmp(readBuffer, &writeBuffer[offset], readLength) == 0, "Message compare failed");
VerifyOrQuit(readLength == kMaxSize - offset);
VerifyOrQuit(memcmp(readBuffer, &writeBuffer[offset], readLength) == 0);
VerifyOrQuit(memcmp(&readBuffer[readLength], zeroBuffer, kMaxSize - readLength) == 0, "read after length");
VerifyOrQuit(!message->CompareBytes(offset, readBuffer, length), "Message::CompareBytes failed");
VerifyOrQuit(message->CompareBytes(offset, readBuffer, readLength), "Message::CompareBytes failed");
VerifyOrQuit(!message->CompareBytes(offset, readBuffer, length));
VerifyOrQuit(message->CompareBytes(offset, readBuffer, readLength));
}
}
VerifyOrQuit(message->GetLength() == kMaxSize, "Message::GetLength failed");
VerifyOrQuit(message->GetLength() == kMaxSize);
// Test `Message::CopyTo()` behavior.
VerifyOrQuit((message2 = messagePool->New(Message::kTypeIp6, 0)) != nullptr, "Message::New failed");
SuccessOrQuit(message2->SetLength(kMaxSize), "Message::SetLength failed");
VerifyOrQuit((message2 = messagePool->New(Message::kTypeIp6, 0)) != nullptr);
SuccessOrQuit(message2->SetLength(kMaxSize));
for (uint16_t srcOffset = 0; srcOffset < kMaxSize; srcOffset += kOffsetStep)
{
@@ -157,19 +157,16 @@ void TestMessage(void)
VerifyOrQuit(bytesCopied == kMaxSize - srcOffset, "CopyTo() failed");
}
SuccessOrQuit(message2->Read(0, readBuffer, kMaxSize), "Message::Read failed");
SuccessOrQuit(message2->Read(0, readBuffer, kMaxSize));
VerifyOrQuit(memcmp(&readBuffer[0], zeroBuffer, dstOffset) == 0, "read before length");
VerifyOrQuit(memcmp(&readBuffer[dstOffset], &writeBuffer[srcOffset], bytesCopied) == 0,
"Compare failed");
VerifyOrQuit(memcmp(&readBuffer[dstOffset], &writeBuffer[srcOffset], bytesCopied) == 0);
VerifyOrQuit(
memcmp(&readBuffer[dstOffset + bytesCopied], zeroBuffer, kMaxSize - bytesCopied - dstOffset) == 0,
"read after length");
VerifyOrQuit(message->CompareBytes(srcOffset, *message2, dstOffset, bytesCopied),
"Message::CompareBytes with two messages failed");
VerifyOrQuit(message2->CompareBytes(dstOffset, *message, srcOffset, bytesCopied),
"Message::CompareBytes with two messages failed");
VerifyOrQuit(message->CompareBytes(srcOffset, *message2, dstOffset, bytesCopied));
VerifyOrQuit(message2->CompareBytes(dstOffset, *message, srcOffset, bytesCopied));
}
}
}
@@ -185,7 +182,7 @@ void TestMessage(void)
bytesCopied = message->CopyTo(srcOffset, 0, kMaxSize, *message);
VerifyOrQuit(bytesCopied == kMaxSize - srcOffset, "CopyTo() failed");
SuccessOrQuit(message->Read(0, readBuffer, kMaxSize), "Message::Read failed");
SuccessOrQuit(message->Read(0, readBuffer, kMaxSize));
VerifyOrQuit(memcmp(&readBuffer[0], &writeBuffer[srcOffset], bytesCopied) == 0,
"CopyTo() changed before srcOffset");
@@ -204,17 +201,15 @@ void TestMessage(void)
for (uint16_t length = 0; length <= kMaxSize - srcOffset; length += kLengthStep)
{
IgnoreError(message2->SetLength(0));
SuccessOrQuit(message2->AppendBytes(zeroBuffer, dstOffset), "AppendBytes() failed");
SuccessOrQuit(message2->AppendBytes(zeroBuffer, dstOffset));
SuccessOrQuit(message2->AppendBytesFromMessage(*message, srcOffset, length),
"AppendBytesFromMessage() failed");
SuccessOrQuit(message2->AppendBytesFromMessage(*message, srcOffset, length));
VerifyOrQuit(message2->CompareBytes(dstOffset, *message, srcOffset, length),
"CompareBytes failed after AppendBytesFromMessage()");
VerifyOrQuit(message2->CompareBytes(dstOffset, *message, srcOffset, length));
}
VerifyOrQuit(message2->AppendBytesFromMessage(*message, srcOffset, kMaxSize - srcOffset + 1) == kErrorParse,
"AppendBytesFromMessage() did not fail with invalid length");
VerifyOrQuit(message2->AppendBytesFromMessage(*message, srcOffset, kMaxSize - srcOffset + 1) ==
kErrorParse);
}
}
@@ -229,11 +224,9 @@ void TestMessage(void)
// Reset the `message` to its original size.
IgnoreError(message->SetLength(size));
SuccessOrQuit(message->AppendBytesFromMessage(*message, srcOffset, length),
"AppendBytesFromMessage() failed");
SuccessOrQuit(message->AppendBytesFromMessage(*message, srcOffset, length));
VerifyOrQuit(message->CompareBytes(size, *message, srcOffset, length),
"CompareBytes failed after AppendBytesFromMessage()");
VerifyOrQuit(message->CompareBytes(size, *message, srcOffset, length));
}
}