format_ut.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include "format.h"
  2. #include <library/cpp/testing/unittest/registar.h>
  3. #include <util/generic/string.h>
  4. #include <util/string/builder.h>
  5. #include <array>
  6. using namespace NMonitoring;
  7. Y_UNIT_TEST_SUITE(TFormatTest) {
  8. Y_UNIT_TEST(ContentTypeHeader) {
  9. UNIT_ASSERT_EQUAL(FormatFromContentType(""), EFormat::UNKNOWN);
  10. UNIT_ASSERT_EQUAL(FormatFromContentType("application/json;some=stuff"), EFormat::JSON);
  11. UNIT_ASSERT_EQUAL(FormatFromContentType("application/x-solomon-spack"), EFormat::SPACK);
  12. UNIT_ASSERT_EQUAL(FormatFromContentType("application/xml"), EFormat::UNKNOWN);
  13. UNIT_ASSERT_EQUAL(FormatFromContentType(";application/xml"), EFormat::UNKNOWN);
  14. }
  15. Y_UNIT_TEST(AcceptHeader) {
  16. UNIT_ASSERT_EQUAL(FormatFromAcceptHeader(""), EFormat::UNKNOWN);
  17. UNIT_ASSERT_EQUAL(FormatFromAcceptHeader("*/*"), EFormat::UNKNOWN);
  18. UNIT_ASSERT_EQUAL(
  19. FormatFromAcceptHeader("application/xml"),
  20. EFormat::UNKNOWN);
  21. UNIT_ASSERT_EQUAL(
  22. FormatFromAcceptHeader("application/json"),
  23. EFormat::JSON);
  24. UNIT_ASSERT_EQUAL(
  25. FormatFromAcceptHeader("application/x-solomon-spack"),
  26. EFormat::SPACK);
  27. UNIT_ASSERT_EQUAL(
  28. FormatFromAcceptHeader("application/x-solomon-pb"),
  29. EFormat::PROTOBUF);
  30. UNIT_ASSERT_EQUAL(
  31. FormatFromAcceptHeader("application/x-solomon-txt"),
  32. EFormat::TEXT);
  33. UNIT_ASSERT_EQUAL(
  34. FormatFromAcceptHeader("application/json, text/plain"),
  35. EFormat::JSON);
  36. UNIT_ASSERT_EQUAL(
  37. FormatFromAcceptHeader("application/x-solomon-spack, application/json, text/plain"),
  38. EFormat::SPACK);
  39. UNIT_ASSERT_EQUAL(
  40. FormatFromAcceptHeader(" , application/x-solomon-spack ,, application/json , text/plain"),
  41. EFormat::SPACK);
  42. UNIT_ASSERT_EQUAL(
  43. FormatFromAcceptHeader("application/xml, application/x-solomon-spack, text/plain"),
  44. EFormat::SPACK);
  45. UNIT_ASSERT_EQUAL(
  46. FormatFromAcceptHeader("text/plain"),
  47. EFormat::PROMETHEUS);
  48. }
  49. Y_UNIT_TEST(FormatToStrFromStr) {
  50. const std::array<EFormat, 6> formats = {{
  51. EFormat::UNKNOWN,
  52. EFormat::SPACK,
  53. EFormat::JSON,
  54. EFormat::PROTOBUF,
  55. EFormat::TEXT,
  56. EFormat::PROMETHEUS,
  57. }};
  58. for (EFormat f : formats) {
  59. TString str = (TStringBuilder() << f);
  60. EFormat g = FromString<EFormat>(str);
  61. UNIT_ASSERT_EQUAL(f, g);
  62. }
  63. }
  64. Y_UNIT_TEST(AcceptEncodingHeader) {
  65. UNIT_ASSERT_EQUAL(
  66. CompressionFromAcceptEncodingHeader(""),
  67. ECompression::UNKNOWN);
  68. UNIT_ASSERT_EQUAL(
  69. CompressionFromAcceptEncodingHeader("br"),
  70. ECompression::UNKNOWN);
  71. UNIT_ASSERT_EQUAL(
  72. CompressionFromAcceptEncodingHeader("identity"),
  73. ECompression::IDENTITY);
  74. UNIT_ASSERT_EQUAL(
  75. CompressionFromAcceptEncodingHeader("zlib"),
  76. ECompression::ZLIB);
  77. UNIT_ASSERT_EQUAL(
  78. CompressionFromAcceptEncodingHeader("lz4"),
  79. ECompression::LZ4);
  80. UNIT_ASSERT_EQUAL(
  81. CompressionFromAcceptEncodingHeader("zstd"),
  82. ECompression::ZSTD);
  83. UNIT_ASSERT_EQUAL(
  84. CompressionFromAcceptEncodingHeader("zstd, zlib"),
  85. ECompression::ZSTD);
  86. UNIT_ASSERT_EQUAL(
  87. CompressionFromAcceptEncodingHeader(" ,, , zstd , zlib"),
  88. ECompression::ZSTD);
  89. UNIT_ASSERT_EQUAL(
  90. CompressionFromAcceptEncodingHeader("br, deflate,lz4, zlib"),
  91. ECompression::LZ4);
  92. }
  93. Y_UNIT_TEST(CompressionToStrFromStr) {
  94. const std::array<ECompression, 5> algs = {{
  95. ECompression::UNKNOWN,
  96. ECompression::IDENTITY,
  97. ECompression::ZLIB,
  98. ECompression::LZ4,
  99. ECompression::ZSTD,
  100. }};
  101. for (ECompression a : algs) {
  102. TString str = (TStringBuilder() << a);
  103. ECompression b = FromString<ECompression>(str);
  104. UNIT_ASSERT_EQUAL(a, b);
  105. }
  106. }
  107. }