21 #include "ns3/buffer.h" 22 #include "ns3/random-variable-stream.h" 23 #include "ns3/double.h" 49 void EnsureWrittenBytes (
Buffer b, uint32_t
n, uint8_t array[],
const char *
file,
int line);
51 virtual void DoRun (
void);
64 uint8_t *expected = array;
67 for (uint32_t j = 0; j <
n; j++)
69 if (got[j] != expected[j])
76 std::ostringstream failure;
77 failure <<
"Buffer -- ";
78 failure <<
"expected: n=";
80 failure.setf (std::ios::hex, std::ios::basefield);
81 for (uint32_t j = 0; j <
n; j++)
83 failure << (uint16_t)expected[j] <<
" ";
85 failure.setf (std::ios::dec, std::ios::basefield);
87 failure.setf (std::ios::hex, std::ios::basefield);
88 for (uint32_t j = 0; j <
n; j++)
90 failure << (uint16_t)got[j] <<
" ";
101 #define ENSURE_WRITTEN_BYTES(buffer, n, ...) \ 103 uint8_t bytes[] = { __VA_ARGS__}; \ 104 EnsureWrittenBytes (buffer, n, bytes, __FILE__, __LINE__); \ 134 ENSURE_WRITTEN_BYTES (buffer, 10, 0, 0, 0x63, 0x69, 0xde, 0xad, 0xbe, 0xaf, 0, 0);
213 i.WriteHtonU32 (0xdeadbeaf);
247 ENSURE_WRITTEN_BYTES (buffer, 11, 0x30, 0x31, 0x32, 0, 0, 0xac, 0xad, 0xae, 0xaf, 0xba, 0xbb);
254 i.WriteHtonU16 (0xabcd);
262 buffer.AddAtStart (9);
269 buffer.AddAtStart (3);
270 buffer.RemoveAtEnd (8);
277 buffer.AddAtEnd (100);
285 const uint32_t actualSize = 72602;
286 const uint32_t chunkSize = 67624;
297 for (uint32_t i = 0; i < actualSize; i++)
303 iter.
Prev (chunkSize);
325 buffer.AddAtStart (2);
334 ENSURE_WRITTEN_BYTES (buffer, 9, 0x1, 0x2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3, 0x4);
338 i.
Write (buffer.Begin (), buffer.End ());
339 ENSURE_WRITTEN_BYTES (other, 9, 0x1, 0x2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3, 0x4);
342 std::string ct (
"This is the next content of the buffer.");
344 buffer.AddAtStart (ct.size ());
346 i.Write ((
const uint8_t*)ct.c_str (), ct.size ());
347 uint32_t sizeBuffer = buffer.GetSize ();
349 uint8_t
const* evilBuffer = buffer.PeekData ();
351 uint8_t *cBuf = (uint8_t*) malloc ( sizeBuffer );
352 uint32_t copyLen = buffer.CopyData (cBuf, sizeBuffer);
354 for (uint8_t i=0; i < sizeBuffer ; i++ )
371 uint16_t val1 = i.ReadNtohU16 ();
void WriteHtonU64(uint64_t data)
void AddAtStart(uint32_t start)
#define ENSURE_WRITTEN_BYTES(buffer, n,...)
void RemoveAtEnd(uint32_t end)
void RemoveAtStart(uint32_t start)
automatically resized byte buffer
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
uint8_t const * PeekData(void) const
void EnsureWrittenBytes(Buffer b, uint32_t n, uint8_t array[], const char *file, int line)
Checks the buffer content.
#define NS_TEST_ASSERT_MSG_EQ_INTERNAL(actual, limit, msg, file, line)
Test that an actual and expected (limit) value are equal and report and abort if not.
iterator in a Buffer instance
void Prev(void)
go backward by one byte
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
void WriteU16(uint16_t data)
void WriteHtonU16(uint16_t data)
void Next(void)
go forward by one byte
void WriteU64(uint64_t data)
void AddAtEnd(uint32_t end)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual void DoRun(void)
Implementation to actually run this TestCase.
void WriteHtonU32(uint32_t data)
Buffer::Iterator End(void) const
void WriteU8(uint8_t data)
#define NS_TEST_ASSERT_MSG_NE(actual, limit, msg)
Test that an actual and expected (limit) value are not equal and report and abort if not...
void WriteHtolsbU64(uint64_t data)
uint32_t GetSize(void) const
Buffer CreateFragment(uint32_t start, uint32_t length) const
void Write(uint8_t const *buffer, uint32_t size)
uint16_t ReadNtohU16(void)
This class can be used to hold variables of floating point type such as 'double' or 'float'...
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Buffer::Iterator Begin(void) const
static BufferTestSuite g_bufferTestSuite
Static variable for test initialization.