circular_buffer_range_test.cc 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <gtest/gtest.h>
  4. #include "opentelemetry/nostd/span.h"
  5. #include "opentelemetry/sdk/common/circular_buffer_range.h"
  6. using opentelemetry::sdk::common::CircularBufferRange;
  7. TEST(CircularBufferRangeTest, ForEach)
  8. {
  9. int array1[] = {1, 2, 3, 4};
  10. int array2[] = {5, 6, 7};
  11. CircularBufferRange<int> range{array1, array2};
  12. int x = 0;
  13. range.ForEach([&](int y) {
  14. EXPECT_EQ(++x, y);
  15. return true;
  16. });
  17. EXPECT_EQ(x, 7);
  18. }
  19. TEST(CircularBufferRangeTest, ForEachWithExit)
  20. {
  21. int array1[] = {1, 2, 3, 4};
  22. int array2[] = {5, 6, 7};
  23. CircularBufferRange<int> range{array1, array2};
  24. int x = 0;
  25. range.ForEach([&](int y) {
  26. EXPECT_EQ(++x, y);
  27. return false;
  28. });
  29. EXPECT_EQ(x, 1);
  30. x = 0;
  31. range.ForEach([&](int y) {
  32. EXPECT_EQ(++x, y);
  33. return y != 5;
  34. });
  35. EXPECT_EQ(x, 5);
  36. }
  37. TEST(CircularBufferRangeTest, Conversion)
  38. {
  39. int array1[] = {1, 2, 3, 4};
  40. int array2[] = {5, 6, 7};
  41. CircularBufferRange<int> range{array1, array2};
  42. CircularBufferRange<const int> range2{range};
  43. int x = 0;
  44. range2.ForEach([&](int y) {
  45. EXPECT_EQ(++x, y);
  46. return true;
  47. });
  48. EXPECT_EQ(x, 7);
  49. }