span_id_test.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include "opentelemetry/trace/span_id.h"
  4. #include <gtest/gtest.h>
  5. #include <cstring>
  6. #include <string>
  7. namespace
  8. {
  9. using opentelemetry::trace::SpanId;
  10. std::string Hex(const opentelemetry::trace::SpanId &span)
  11. {
  12. char buf[16];
  13. span.ToLowerBase16(buf);
  14. return std::string(buf, sizeof(buf));
  15. }
  16. TEST(SpanIdTest, DefaultConstruction)
  17. {
  18. SpanId id;
  19. EXPECT_FALSE(id.IsValid());
  20. EXPECT_EQ("0000000000000000", Hex(id));
  21. }
  22. TEST(SpanIdTest, ValidId)
  23. {
  24. constexpr uint8_t buf[] = {1, 2, 3, 4, 5, 6, 7, 8};
  25. SpanId id(buf);
  26. EXPECT_TRUE(id.IsValid());
  27. EXPECT_EQ("0102030405060708", Hex(id));
  28. EXPECT_NE(SpanId(), id);
  29. EXPECT_EQ(SpanId(buf), id);
  30. }
  31. TEST(SpanIdTest, LowercaseBase16)
  32. {
  33. constexpr uint8_t buf[] = {1, 2, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};
  34. SpanId id(buf);
  35. EXPECT_TRUE(id.IsValid());
  36. EXPECT_EQ("0102aabbccddeeff", Hex(id));
  37. EXPECT_NE(SpanId(), id);
  38. EXPECT_EQ(SpanId(buf), id);
  39. }
  40. TEST(SpanIdTest, CopyBytesTo)
  41. {
  42. constexpr uint8_t src[] = {1, 2, 3, 4, 5, 6, 7, 8};
  43. SpanId id(src);
  44. uint8_t buf[8];
  45. id.CopyBytesTo(buf);
  46. EXPECT_TRUE(memcmp(src, buf, 8) == 0);
  47. }
  48. } // namespace