| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LOGIN_MANAGER_MATCHERS_H_ |
| #define LOGIN_MANAGER_MATCHERS_H_ |
| |
| #include <algorithm> |
| #include <type_traits> |
| |
| #include <base/files/file_path.h> |
| #include <gmock/gmock.h> |
| |
| namespace login_manager { |
| |
| // Forces arg to an array of char and compares to str for equality. |
| MATCHER_P(CastEq, str, "") { |
| return std::equal(str.begin(), str.end(), reinterpret_cast<const char*>(arg)); |
| } |
| |
| MATCHER_P(VectorEq, str, "") { |
| return str.size() == arg.size() && |
| std::equal(str.begin(), str.end(), arg.begin()); |
| } |
| |
| // Compares protobuf message by serialization. |
| MATCHER_P(ProtoEq, proto, "") { |
| // Make sure given proto types are same. |
| using ArgType = typename std::remove_cv< |
| typename std::remove_reference<decltype(arg)>::type>::type; |
| using ProtoType = typename std::remove_cv< |
| typename std::remove_reference<decltype(proto)>::type>::type; |
| static_assert(std::is_same<ArgType, ProtoType>::value, "Proto type mismatch"); |
| |
| return arg.SerializeAsString() == proto.SerializeAsString(); |
| } |
| |
| MATCHER_P(StatusEq, status, "") { |
| return (arg.owner_key_file_state == status.owner_key_file_state && |
| arg.policy_file_state == status.policy_file_state && |
| arg.defunct_prefs_file_state == status.defunct_prefs_file_state); |
| } |
| |
| MATCHER_P(PathStartsWith, path_prefix, "") { |
| return path_prefix.IsParent(arg); |
| } |
| |
| } // namespace login_manager |
| |
| #endif // LOGIN_MANAGER_MATCHERS_H_ |