datagram_buffer_unittest.cc 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "net/base/datagram_buffer.h"
  5. #include "testing/gtest/include/gtest/gtest.h"
  6. namespace net::test {
  7. const size_t kMaxBufferSize = 1024;
  8. class DatagramBufferTest : public testing::Test {
  9. public:
  10. DatagramBufferTest() : pool_(kMaxBufferSize) {}
  11. DatagramBufferPool pool_;
  12. };
  13. TEST_F(DatagramBufferTest, EnqueueCopiesData) {
  14. DatagramBuffers buffers;
  15. const char data[] = "foo";
  16. pool_.Enqueue(data, sizeof(data), &buffers);
  17. EXPECT_EQ(sizeof(data), buffers.front()->length());
  18. EXPECT_NE(data, buffers.front()->data());
  19. EXPECT_EQ(0, memcmp(data, buffers.front()->data(), sizeof(data)));
  20. }
  21. TEST_F(DatagramBufferTest, DatgramBufferPoolRecycles) {
  22. DatagramBuffers buffers;
  23. const char data1[] = "foo";
  24. pool_.Enqueue(data1, sizeof(data1), &buffers);
  25. DatagramBuffer* buffer1_ptr = buffers.back().get();
  26. EXPECT_EQ(1u, buffers.size());
  27. const char data2[] = "bar";
  28. pool_.Enqueue(data2, sizeof(data2), &buffers);
  29. DatagramBuffer* buffer2_ptr = buffers.back().get();
  30. EXPECT_EQ(2u, buffers.size());
  31. pool_.Dequeue(&buffers);
  32. EXPECT_EQ(0u, buffers.size());
  33. const char data3[] = "baz";
  34. pool_.Enqueue(data3, sizeof(data3), &buffers);
  35. EXPECT_EQ(1u, buffers.size());
  36. EXPECT_EQ(buffer1_ptr, buffers.back().get());
  37. const char data4[] = "bag";
  38. pool_.Enqueue(data4, sizeof(data4), &buffers);
  39. EXPECT_EQ(2u, buffers.size());
  40. EXPECT_EQ(buffer2_ptr, buffers.back().get());
  41. }
  42. } // namespace net::test