@@ -152,18 +152,25 @@ TEST(DatetimeUtilsDateIsValid, DayDoesNotMatchMonth) { EXPECT_FALSE(ugrpc::IsVal
152152
153153#if __cpp_lib_chrono >= 201907L
154154
155+ template <typename Value>
156+ concept YearMonthDaySerializationSupported = requires (const Value& value) {
157+ Parse (value, formats::parse::To<std::chrono::year_month_day>{});
158+ };
159+
155160TEST (DatetimeUtils, ToProtoDateFromYearMonthDay) {
156161 EXPECT_TRUE (kGrpcCompare (kDate , ugrpc::ToProtoDate (kYearMonthDay )));
157162}
158163
159164TEST (DatetimeUtils, ToProtoDateFromInvalidYearMonthDay) {
160- constexpr std::chrono::year_month_day
161- kInvalidYearMonthDay (std::chrono::year (11000 ), std::chrono::month (4 ), std::chrono::day (10 ));
162- UEXPECT_THROW_MSG (
163- formats::json::ValueBuilder (kInvalidYearMonthDay ).ExtractValue (),
164- ugrpc::DateConversionError,
165- " system_date is invalid"
166- );
165+ if constexpr (YearMonthDaySerializationSupported<formats::json::Value>) {
166+ constexpr std::chrono::year_month_day
167+ kInvalidYearMonthDay (std::chrono::year (11000 ), std::chrono::month (4 ), std::chrono::day (10 ));
168+ UEXPECT_THROW_MSG (
169+ formats::json::ValueBuilder (kInvalidYearMonthDay ).ExtractValue (),
170+ ugrpc::DateConversionError,
171+ " system_date is invalid"
172+ );
173+ }
167174}
168175
169176TEST (DatetimeUtils, ToYearMonthDay) { EXPECT_EQ (kYearMonthDay , ugrpc::ToYearMonthDay (kDate )); }
0 commit comments