#include #include #include #include namespace NYT::NYson { namespace { //////////////////////////////////////////////////////////////////////////////// template void Check(const U& value) { auto str = ConvertToYsonString(static_cast(value)); auto anotherValue = ConvertFromYsonString(str); EXPECT_EQ(static_cast(value), anotherValue); } TEST(TConvertTest, Basic) { Check(13); Check(13); Check(13); Check(-13); Check(-13); Check(-13); Check(13); Check(13); Check(13); Check(""); Check("hello"); Check("hello"); Check("hello"); Check(3.14); Check(3.14); Check(true); Check(false); Check(TInstant::Now()); Check(TDuration::Seconds(123)); Check(TGuid::FromString("12345678-12345678-abcdabcd-fefefefe")); } TEST(TConvertTest, InRange) { EXPECT_EQ(ConvertFromYsonString(ConvertToYsonString(static_cast(-123))), -123); EXPECT_EQ(ConvertFromYsonString(ConvertToYsonString(static_cast(123))), 123U); } TEST(TConvertTest, OutOfRange) { EXPECT_THROW_MESSAGE_HAS_SUBSTR( ConvertFromYsonString(ConvertToYsonString(static_cast(128))), TYsonLiteralParseException, "is out of expected range"); EXPECT_THROW_MESSAGE_HAS_SUBSTR( ConvertFromYsonString(ConvertToYsonString(static_cast(256))), TYsonLiteralParseException, "is out of expected range"); } TEST(TConvertTest, MalformedValues) { EXPECT_THROW_MESSAGE_HAS_SUBSTR( ConvertFromYsonString(ConvertToYsonString(TStringBuf("sometime"))), TYsonLiteralParseException, "Error parsing \"instant\" value"); EXPECT_THROW_MESSAGE_HAS_SUBSTR( ConvertFromYsonString(ConvertToYsonString(TStringBuf("1-2-3-g"))), TYsonLiteralParseException, "Error parsing \"guid\" value"); } //////////////////////////////////////////////////////////////////////////////// } // namespace } // namespace NYT::NYson