| 274 | } |
| 275 | |
| 276 | bool IsEqual(const ValueProto& expected, const ValueProto& actual) { |
| 277 | static auto* kFieldComparator = []() { |
| 278 | auto* field_comparator = new google::protobuf::util::DefaultFieldComparator(); |
| 279 | field_comparator->set_treat_nan_as_equal(true); |
| 280 | return field_comparator; |
| 281 | }(); |
| 282 | static auto* kDifferencer = []() { |
| 283 | auto* differencer = new google::protobuf::util::MessageDifferencer(); |
| 284 | differencer->set_message_field_comparison( |
| 285 | google::protobuf::util::MessageDifferencer::EQUIVALENT); |
| 286 | differencer->set_field_comparator(kFieldComparator); |
| 287 | const auto* descriptor = cel::expr::MapValue::descriptor(); |
| 288 | const auto* entries_field = descriptor->FindFieldByName("entries"); |
| 289 | const auto* key_field = |
| 290 | entries_field->message_type()->FindFieldByName("key"); |
| 291 | differencer->TreatAsMap(entries_field, key_field); |
| 292 | return differencer; |
| 293 | }(); |
| 294 | return kDifferencer->Compare(expected, actual); |
| 295 | } |
| 296 | |
| 297 | MATCHER_P(MatchesValue, expected, "") { return IsEqual(arg, expected); } |
| 298 | } // namespace |
no test coverage detected