[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
+179 -206
View File
@@ -79,49 +79,46 @@ void TestHdlcFrameBuffer(void)
printf("Testing Hdlc::FrameBuffer");
VerifyOrQuit(frameBuffer.IsEmpty(), "IsEmpty() failed after constructor");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after constructor");
VerifyOrQuit(frameBuffer.IsEmpty(), "after constructor");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after constructor");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0);
VerifyOrQuit(frameBuffer.CanWrite(1), "CanWrite() failed");
VerifyOrQuit(!frameBuffer.IsEmpty(), "IsEmpty() failed");
VerifyOrQuit(frameBuffer.CanWrite(1));
VerifyOrQuit(!frameBuffer.IsEmpty());
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) + sizeof(sHelloText) - 2, "GetLength() failed");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) + sizeof(sHelloText) - 2);
frameBuffer.UndoLastWrites(sizeof(sHelloText) - 1);
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0);
VerifyOrQuit(!frameBuffer.IsEmpty(), "IsEmpty() failed");
VerifyOrQuit(!frameBuffer.IsEmpty());
frameBuffer.Clear();
VerifyOrQuit(frameBuffer.IsEmpty(), "IsEmpty() failed after Clear()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after Clear()");
VerifyOrQuit(frameBuffer.IsEmpty(), "after Clear()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after Clear()");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0);
frameBuffer.Clear();
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize), "CanWrite(kBufferSize) failed unexpectedly");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize));
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize + 1) == false, "CanWrite(kBufferSize + 1) did not fail as expected");
for (uint16_t i = 0; i < kBufferSize; i++)
{
VerifyOrQuit(frameBuffer.CanWrite(1), "CanWrite() failed unexpectedly");
SuccessOrQuit(frameBuffer.WriteByte(i & 0xff), "WriteByte() failed unexpectedly");
VerifyOrQuit(frameBuffer.CanWrite(1));
SuccessOrQuit(frameBuffer.WriteByte(i & 0xff));
}
VerifyOrQuit(frameBuffer.CanWrite(1) == false, "CanWrite() did not fail with full buffer");
VerifyOrQuit(frameBuffer.WriteByte(0) == OT_ERROR_NO_BUFS, "WriteByte() did not fail with full buffer");
VerifyOrQuit(frameBuffer.CanWrite(1) == false, "did not fail with full buffer");
VerifyOrQuit(frameBuffer.WriteByte(0) == OT_ERROR_NO_BUFS, "did not fail with full buffer");
printf(" -- PASS\n");
}
@@ -139,88 +136,81 @@ void TestHdlcMultiFrameBuffer(void)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Check state after constructor
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after constructor");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after constructor");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after constructor");
VerifyOrQuit(frameBuffer.GetNextSavedFrame(frame, length) == OT_ERROR_NOT_FOUND,
"GetNextSavedFrame() incorrect behavior after constructor");
VerifyOrQuit(!frameBuffer.HasFrame(), "after constructor");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "after constructor");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after constructor");
VerifyOrQuit(frameBuffer.GetNextSavedFrame(frame, length) == OT_ERROR_NOT_FOUND, "after constructor");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Write multiple frames, save them and read later
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after SaveFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after SaveFrame()");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHelloText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHelloText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after SaveFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after SaveFrame()");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0);
frameBuffer.DiscardFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after DiscardFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after DiscardFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after DiscardFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after DiscardFrame()");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0);
frameBuffer.DiscardFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after DiscardFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after DiscardFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after DiscardFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after DiscardFrame()");
SuccessOrQuit(WriteToBuffer(sHexText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHexText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHexText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
SuccessOrQuit(WriteToBuffer(sHexText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHexText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHexText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after SaveFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after SaveFrame()");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0);
// Read the first saved frame and check the content
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sMottoText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sMottoText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
// Read the second saved frame and check the content
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHelloText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHelloText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
// Read the third saved frame and check the content
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHexText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHexText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
@@ -230,35 +220,35 @@ void TestHdlcMultiFrameBuffer(void)
"GetNextSavedFrame() incorrect behavior after all frames were read");
VerifyOrQuit(newFrame == nullptr, "GetNextSavedFrame() incorrect behavior after all frames were read");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1, "GetLength() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
frameBuffer.SaveFrame();
// Read the fourth saved frame and check the content
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sOpenThreadText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sOpenThreadText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
// Re-read all the saved frames
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sMottoText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sMottoText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
// Second saved frame
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHelloText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHelloText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
// Third saved frame
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHexText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHexText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
// Fourth saved frame and check the content
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sOpenThreadText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sOpenThreadText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
@@ -267,94 +257,85 @@ void TestHdlcMultiFrameBuffer(void)
frameBuffer.Clear();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() failed after Clear()");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after Clear()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "GetLength() failed after Clear()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after Clear()");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "after Clear()");
VerifyOrQuit(frameBuffer.GetLength() == 0, "after Clear()");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer));
frameBuffer.SaveFrame();
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer));
frameBuffer.SaveFrame();
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasFrame() incorrect behavior after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasFrame() incorrect behavior after SaveFrame()");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after GetNextSavedFrame()");
frameBuffer.Clear();
frame = nullptr;
VerifyOrQuit(frameBuffer.GetNextSavedFrame(frame, length) == OT_ERROR_NOT_FOUND,
"GetNextSavedFrame() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.GetNextSavedFrame(frame, length) == OT_ERROR_NOT_FOUND, "after Clear()");
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() incorrect behavior after Clear()");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "HasFrame() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - (kFrameHeaderSize - 1)) == false,
"CanWrite() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - kFrameHeaderSize) == true,
"CanWrite() incorrect behavior after Clear()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after Clear()");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "after Clear()");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - (kFrameHeaderSize - 1)) == false, "after Clear()");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - kFrameHeaderSize) == true, "after Clear()");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Verify behavior of `ClearSavedFrames()`
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer));
frameBuffer.SaveFrame();
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer));
frameBuffer.SaveFrame();
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer));
frameBuffer.SaveFrame();
SuccessOrQuit(WriteToBuffer(sHexText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sHexText, frameBuffer));
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHelloText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHelloText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
frameBuffer.ClearSavedFrames();
VerifyOrQuit(frameBuffer.HasFrame(), "HasFrame() failed after ClearSavedFrames()");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "HasSavedFrame() failed after ClearSavedFrames()");
VerifyOrQuit(frameBuffer.HasFrame(), "after ClearSavedFrames()");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "after ClearSavedFrames()");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHexText) - 1, "Frame length is incorrect after ClearSavedFrames()");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHexText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect after ClearSavedFrames()");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHexText) - 1, "after ClearSavedFrames()");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHexText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer));
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHexText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHexText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText) - 1,
"Frame length is incorrect after ClearSavedFrames()");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHelloText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect after ClearSavedFrames()");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText) - 1, "after ClearSavedFrames()");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHelloText, frameBuffer.GetLength()) == 0, "after ClearSavedFrames()");
frameBuffer.ClearSavedFrames();
frameBuffer.DiscardFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() incorrect behavior after all frames are read and discarded");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "HasFrame() incorrect behavior after all read or discarded");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - (kFrameHeaderSize - 1)) == false,
"CanWrite() incorrect behavior after all read or discarded");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - kFrameHeaderSize) == true,
"CanWrite() incorrect behavior after all read of discarded");
VerifyOrQuit(!frameBuffer.HasFrame(), "after all frames are read and discarded");
VerifyOrQuit(!frameBuffer.HasSavedFrame(), "after all read or discarded");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - (kFrameHeaderSize - 1)) == false, "after all read or discarded");
VerifyOrQuit(frameBuffer.CanWrite(kBufferSize - kFrameHeaderSize) == true, "after all read of discarded");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer), "WriteByte() failed");
SuccessOrQuit(WriteToBuffer(sHelloText, frameBuffer));
frameBuffer.ClearSavedFrames();
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHelloText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sHelloText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHelloText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHelloText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
@@ -363,97 +344,89 @@ void TestHdlcMultiFrameBuffer(void)
frameBuffer.Clear();
VerifyOrQuit(frameBuffer.GetSkipLength() == 0, "GetSkipLength() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.SetSkipLength(sizeof(sSkipText)) == OT_ERROR_NONE, "SetSkipLength() failed");
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetSkipLength() == 0, "after Clear()");
VerifyOrQuit(frameBuffer.SetSkipLength(sizeof(sSkipText)) == OT_ERROR_NONE);
SuccessOrQuit(WriteToBuffer(sMottoText, frameBuffer));
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0);
memcpy(frameBuffer.GetFrame() - sizeof(sSkipText), sSkipText, sizeof(sSkipText));
VerifyOrQuit(frameBuffer.GetSkipLength() == sizeof(sSkipText), "GetSkipLength() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetSkipLength() == sizeof(sSkipText));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sMottoText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() incorrect behavior after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasFrame() incorrect behavior after SaveFrame()");
VerifyOrQuit(frameBuffer.GetSkipLength() == 0, "GetSkipLength() incorrect behavior after SaveFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.GetSkipLength() == 0, "after SaveFrame()");
VerifyOrQuit(frameBuffer.SetSkipLength(sizeof(sSkipText)) == OT_ERROR_NONE, "SetSkipLength() failed");
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer), "WriteByte() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.SetSkipLength(sizeof(sSkipText)) == OT_ERROR_NONE);
SuccessOrQuit(WriteToBuffer(sOpenThreadText, frameBuffer));
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0);
memcpy(frameBuffer.GetFrame() - sizeof(sSkipText), sSkipText, sizeof(sSkipText));
VerifyOrQuit(frameBuffer.GetSkipLength() == sizeof(sSkipText), "GetSkipLength() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1, "GetLength() failed");
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0,
"GetFrame() content is incorrect");
VerifyOrQuit(frameBuffer.GetSkipLength() == sizeof(sSkipText));
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sOpenThreadText) - 1);
VerifyOrQuit(memcmp(frameBuffer.GetFrame(), sOpenThreadText, frameBuffer.GetLength()) == 0);
frameBuffer.SaveFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() incorrect behavior after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "HasFrame() incorrect behavior after SaveFrame()");
VerifyOrQuit(frameBuffer.GetSkipLength() == 0, "GetSkipLength() incorrect behavior after SaveFrame()");
VerifyOrQuit(!frameBuffer.HasFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.HasSavedFrame(), "after SaveFrame()");
VerifyOrQuit(frameBuffer.GetSkipLength() == 0, "after SaveFrame()");
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sMottoText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sMottoText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
VerifyOrQuit(memcmp(frame - sizeof(sSkipText), sSkipText, sizeof(sSkipText)) == 0,
"GetNextSavedFrame() reserved frame buffer content is incorrect");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sOpenThreadText) - 1, "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sOpenThreadText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
VerifyOrQuit(memcmp(frame - sizeof(sSkipText), sSkipText, sizeof(sSkipText)) == 0,
"GetNextSavedFrame() reserved frame buffer content is incorrect");
frameBuffer.Clear();
VerifyOrQuit(frameBuffer.SetSkipLength(kBufferSize - (kFrameHeaderSize - 1)) == OT_ERROR_NO_BUFS,
"SetSkipLength() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.SetSkipLength(kBufferSize - kFrameHeaderSize) == OT_ERROR_NONE,
"SetSkipLength() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.SetSkipLength(kBufferSize - (kFrameHeaderSize - 1)) == OT_ERROR_NO_BUFS, "after Clear()");
VerifyOrQuit(frameBuffer.SetSkipLength(kBufferSize - kFrameHeaderSize) == OT_ERROR_NONE, "after Clear()");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Verify behavior of `SetLength()` and `GetLength()`
frameBuffer.Clear();
VerifyOrQuit((frame = frameBuffer.GetFrame()) != nullptr, "GetFrame() failed");
VerifyOrQuit((frame = frameBuffer.GetFrame()) != nullptr);
memcpy(frame, sHelloText, sizeof(sHelloText));
VerifyOrQuit(frameBuffer.SetLength(sizeof(sHelloText)) == OT_ERROR_NONE, "SetLength() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText), "GetLength() failed");
VerifyOrQuit(frameBuffer.HasFrame(), "HasFrame() is incorrect");
VerifyOrQuit(frameBuffer.SetLength(sizeof(sHelloText)) == OT_ERROR_NONE);
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHelloText));
VerifyOrQuit(frameBuffer.HasFrame());
frameBuffer.SaveFrame();
VerifyOrQuit((frame = frameBuffer.GetFrame()) != nullptr, "GetFrame() failed");
VerifyOrQuit((frame = frameBuffer.GetFrame()) != nullptr);
memcpy(frame, sMottoText, sizeof(sMottoText));
VerifyOrQuit(frameBuffer.SetLength(sizeof(sMottoText)) == OT_ERROR_NONE, "SetLength() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText), "GetLength() failed");
VerifyOrQuit(frameBuffer.HasFrame(), "HasFrame() is incorrect");
VerifyOrQuit(frameBuffer.SetLength(sizeof(sMottoText)) == OT_ERROR_NONE);
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sMottoText));
VerifyOrQuit(frameBuffer.HasFrame());
frameBuffer.SaveFrame();
VerifyOrQuit((frame = frameBuffer.GetFrame()) != nullptr, "GetFrame() failed");
VerifyOrQuit((frame = frameBuffer.GetFrame()) != nullptr);
memcpy(frame, sHexText, sizeof(sHexText));
VerifyOrQuit(frameBuffer.SetLength(sizeof(sHexText)) == OT_ERROR_NONE, "SetLength() failed");
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHexText), "GetLength() failed");
VerifyOrQuit(frameBuffer.SetLength(sizeof(sHexText)) == OT_ERROR_NONE);
VerifyOrQuit(frameBuffer.GetLength() == sizeof(sHexText));
frameBuffer.DiscardFrame();
VerifyOrQuit(!frameBuffer.HasFrame(), "HasFrame() is incorrect");
VerifyOrQuit(!frameBuffer.HasFrame());
frame = nullptr;
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHelloText), "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sHelloText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(frameBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sMottoText), "GetNextSavedFrame() length is incorrect");
VerifyOrQuit(memcmp(frame, sMottoText, length) == 0, "GetNextSavedFrame() frame content is incorrect");
SuccessOrQuit(!frameBuffer.GetNextSavedFrame(frame, length), "GetNextSavedFrame() failed unexpectedly");
SuccessOrQuit(!frameBuffer.GetNextSavedFrame(frame, length));
frameBuffer.Clear();
VerifyOrQuit(frameBuffer.SetLength(kBufferSize - (kFrameHeaderSize - 1)) == OT_ERROR_NO_BUFS,
"SetLength() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.SetLength(kBufferSize - kFrameHeaderSize) == OT_ERROR_NONE,
"SetLength() incorrect behavior after Clear()");
VerifyOrQuit(frameBuffer.SetLength(kBufferSize - (kFrameHeaderSize - 1)) == OT_ERROR_NO_BUFS, "after Clear()");
VerifyOrQuit(frameBuffer.SetLength(kBufferSize - kFrameHeaderSize) == OT_ERROR_NONE, "after Clear()");
printf(" -- PASS\n");
}
@@ -487,35 +460,35 @@ void TestEncoderDecoder(void)
printf("Testing Hdlc::Encoder and Hdlc::Decoder");
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(sOpenThreadText, sizeof(sOpenThreadText) - 1), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(sOpenThreadText, sizeof(sOpenThreadText) - 1));
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.SaveFrame();
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(sMottoText, sizeof(sMottoText) - 1), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(sMottoText, sizeof(sMottoText) - 1));
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.SaveFrame();
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(sHdlcSpecials, sizeof(sHdlcSpecials)), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(sHdlcSpecials, sizeof(sHdlcSpecials)));
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.SaveFrame();
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(sHelloText, sizeof(sHelloText) - 1), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(sHelloText, sizeof(sHelloText) - 1));
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.SaveFrame();
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
// Empty frame
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.SaveFrame();
byte = kFlagSequence;
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(&byte, sizeof(uint8_t)), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(&byte, sizeof(uint8_t)));
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.SaveFrame();
// Feed the encoded frames to decoder and save the content
@@ -525,7 +498,7 @@ void TestEncoderDecoder(void)
decoder.Decode(frame, length);
VerifyOrQuit(decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(decoderContext.mWasCalled);
VerifyOrQuit(decoderContext.mError == OT_ERROR_NONE, "Decoder::Decode() returned incorrect error code");
decoderBuffer.SaveFrame();
@@ -533,26 +506,26 @@ void TestEncoderDecoder(void)
// Verify the decoded frames match the original frames
frame = nullptr;
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length), "Incorrect decoded frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sOpenThreadText) - 1, "Decoded frame length does not match original frame");
VerifyOrQuit(memcmp(frame, sOpenThreadText, length) == 0, "Decoded frame content does not match original frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length), "Incorrect decoded frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sMottoText) - 1, "Decoded frame length does not match original frame");
VerifyOrQuit(memcmp(frame, sMottoText, length) == 0, "Decoded frame content does not match original frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length), "Incorrect decoded frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHdlcSpecials), "Decoded frame length does not match original frame");
VerifyOrQuit(memcmp(frame, sHdlcSpecials, length) == 0, "Decoded frame content does not match original frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length), "Incorrect decoded frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(sHelloText) - 1, "Decoded frame length does not match original frame");
VerifyOrQuit(memcmp(frame, sHelloText, length) == 0, "Decoded frame content does not match original frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length), "Incorrect decoded frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == 0, "Decoded frame length does not match original frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length), "Incorrect decoded frame");
SuccessOrQuit(decoderBuffer.GetNextSavedFrame(frame, length));
VerifyOrQuit(length == sizeof(uint8_t), "Decoded frame length does not match original frame");
VerifyOrQuit(*frame == kFlagSequence, "Decoded frame content does not match original frame");
@@ -562,7 +535,7 @@ void TestEncoderDecoder(void)
decoderBuffer.Clear();
// Test `Encoder` behavior when running out of buffer space
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
error = OT_ERROR_NONE;
@@ -580,15 +553,15 @@ void TestEncoderDecoder(void)
// Test `Decoder` behavior with incorrect FCS
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(sMottoText, sizeof(sMottoText) - 1), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(sMottoText, sizeof(sMottoText) - 1));
SuccessOrQuit(encoder.EndFrame());
encoderBuffer.GetFrame()[0] ^= 0x0a; // Change the first byte in the frame to cause FCS failure
decoderContext.mWasCalled = false;
decoder.Decode(encoderBuffer.GetFrame(), encoderBuffer.GetLength());
VerifyOrQuit(decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(decoderContext.mWasCalled);
VerifyOrQuit(decoderContext.mError == OT_ERROR_PARSE, "Decoder::Decode() did not fail with bad FCS");
decoderBuffer.Clear();
@@ -597,7 +570,7 @@ void TestEncoderDecoder(void)
decoderContext.mWasCalled = false;
decoder.Decode(badShortFrame, sizeof(badShortFrame));
VerifyOrQuit(decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(decoderContext.mWasCalled);
VerifyOrQuit(decoderContext.mError == OT_ERROR_PARSE, "Decoder::Decode() did not fail for short frame");
decoderBuffer.Clear();
@@ -607,13 +580,13 @@ void TestEncoderDecoder(void)
byte = kFlagSequence;
decoderContext.mWasCalled = false;
decoder.Decode(&byte, sizeof(uint8_t));
VerifyOrQuit(!decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(!decoderContext.mWasCalled);
decoder.Decode(&byte, sizeof(uint8_t));
VerifyOrQuit(!decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(!decoderContext.mWasCalled);
decoder.Decode(&byte, sizeof(uint8_t));
VerifyOrQuit(!decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(!decoderContext.mWasCalled);
decoder.Decode(&byte, sizeof(uint8_t));
VerifyOrQuit(!decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(!decoderContext.mWasCalled);
printf(" -- PASS\n");
}
@@ -650,16 +623,16 @@ void TestFuzzEncoderDecoder(void)
frame[i] = static_cast<uint8_t>(GetRandom(256));
}
SuccessOrQuit(encoder.BeginFrame(), "Encoder::BeginFrame() failed");
SuccessOrQuit(encoder.Encode(frame, length), "Encoder::Encode() failed");
SuccessOrQuit(encoder.EndFrame(), "Encoder::EndFrame() failed");
SuccessOrQuit(encoder.BeginFrame());
SuccessOrQuit(encoder.Encode(frame, length));
SuccessOrQuit(encoder.EndFrame());
VerifyOrQuit(!encoderBuffer.IsEmpty(), "Encoded frame is empty");
VerifyOrQuit(encoderBuffer.GetLength() > length, "Encoded frame is too short");
decoderContext.mWasCalled = false;
decoder.Decode(encoderBuffer.GetFrame(), encoderBuffer.GetLength());
VerifyOrQuit(decoderContext.mWasCalled, "Decoder::Decode() failed");
VerifyOrQuit(decoderContext.mWasCalled);
VerifyOrQuit(decoderContext.mError == OT_ERROR_NONE, "Decoder::Decode() returned incorrect error code");
VerifyOrQuit(!decoderBuffer.IsEmpty(), "Decoded frame is empty");