#include "format.h" #include #include #include #include using namespace NMonitoring; Y_UNIT_TEST_SUITE(TFormatTest) { Y_UNIT_TEST(ContentTypeHeader) { UNIT_ASSERT_EQUAL(FormatFromContentType(""), EFormat::UNKNOWN); UNIT_ASSERT_EQUAL(FormatFromContentType("application/json;some=stuff"), EFormat::JSON); UNIT_ASSERT_EQUAL(FormatFromContentType("application/x-solomon-spack"), EFormat::SPACK); UNIT_ASSERT_EQUAL(FormatFromContentType("application/xml"), EFormat::UNKNOWN); UNIT_ASSERT_EQUAL(FormatFromContentType(";application/xml"), EFormat::UNKNOWN); } Y_UNIT_TEST(AcceptHeader) { UNIT_ASSERT_EQUAL(FormatFromAcceptHeader(""), EFormat::UNKNOWN); UNIT_ASSERT_EQUAL(FormatFromAcceptHeader("*/*"), EFormat::UNKNOWN); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/xml"), EFormat::UNKNOWN); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/json"), EFormat::JSON); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/x-solomon-spack"), EFormat::SPACK); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/x-solomon-pb"), EFormat::PROTOBUF); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/x-solomon-txt"), EFormat::TEXT); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/json, text/plain"), EFormat::JSON); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/x-solomon-spack, application/json, text/plain"), EFormat::SPACK); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader(" , application/x-solomon-spack ,, application/json , text/plain"), EFormat::SPACK); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/xml, application/x-solomon-spack, text/plain"), EFormat::SPACK); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("text/plain"), EFormat::PROMETHEUS); UNIT_ASSERT_EQUAL( FormatFromAcceptHeader("application/openmetrics-text;version=0.0.1;q=0.75,text/plain;version=0.0.4"), EFormat::PROMETHEUS); } Y_UNIT_TEST(FormatToStrFromStr) { const std::array formats = {{ EFormat::UNKNOWN, EFormat::SPACK, EFormat::JSON, EFormat::PROTOBUF, EFormat::TEXT, EFormat::PROMETHEUS, }}; for (EFormat f : formats) { TString str = (TStringBuilder() << f); EFormat g = FromString(str); UNIT_ASSERT_EQUAL(f, g); } } Y_UNIT_TEST(AcceptEncodingHeader) { UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader(""), ECompression::UNKNOWN); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("br"), ECompression::UNKNOWN); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("identity"), ECompression::IDENTITY); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("zlib"), ECompression::ZLIB); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("lz4"), ECompression::LZ4); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("zstd"), ECompression::ZSTD); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("zstd, zlib"), ECompression::ZSTD); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader(" ,, , zstd , zlib"), ECompression::ZSTD); UNIT_ASSERT_EQUAL( CompressionFromAcceptEncodingHeader("br, deflate,lz4, zlib"), ECompression::LZ4); } Y_UNIT_TEST(CompressionToStrFromStr) { const std::array algs = {{ ECompression::UNKNOWN, ECompression::IDENTITY, ECompression::ZLIB, ECompression::LZ4, ECompression::ZSTD, }}; for (ECompression a : algs) { TString str = (TStringBuilder() << a); ECompression b = FromString(str); UNIT_ASSERT_EQUAL(a, b); } } }