Skip to content

Commit 1521a08

Browse files
Add comparison operator for Auth::User (#1301)
* Add comparison operator for Auth::User * Change to use is_valid() * Add tests * format_code * Add != operator * add comments * Add documentation * update TODO * format code --------- Co-authored-by: Jon Simantov <jsimantov@google.com>
1 parent 1282776 commit 1521a08

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

auth/src/common.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,14 @@ void PhoneAuthProvider::Listener::OnCodeAutoRetrievalTimeOut(
8282
///
8383
User::User() { auth_data_ = nullptr; }
8484

85+
bool User::operator==(const User& user) const {
86+
// This is based on the assumption that there is only one user before
87+
// Auth rewrite.
88+
// TODO(AuthRewrite): Must change during Auth Rewrite
89+
return is_valid() == user.is_valid();
90+
}
91+
92+
bool User::operator!=(const User& user) const { return !(*this == user); }
93+
8594
} // namespace auth
8695
} // namespace firebase

auth/src/include/firebase/auth/user.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,12 @@ class User : public UserInfoInterface {
198198
/// Assignment operator.
199199
User& operator=(const User&);
200200

201+
/// Equality operator.
202+
bool operator==(const User&) const;
203+
204+
/// Inequality operator.
205+
bool operator!=(const User&) const;
206+
201207
~User();
202208

203209
/// Returns whether this User object represents a valid user. Could be false

auth/tests/user_test.cc

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,5 +521,55 @@ TEST_F(UserTest, TestGetter) {
521521
EXPECT_FALSE(firebase_user_->uid().empty());
522522
EXPECT_TRUE(firebase_user_->photo_url().empty());
523523
}
524+
525+
TEST_F(UserTest, TestComparisonOperator) {
526+
{
527+
// Two invalid users
528+
User user_invalid1;
529+
User user_invalid2;
530+
EXPECT_EQ(user_invalid1, user_invalid2);
531+
}
532+
533+
{
534+
// A invalid user
535+
User user_invalid;
536+
EXPECT_NE(&firebase_user_, user_invalid);
537+
}
538+
539+
{
540+
// Copied valid user
541+
User user_copy(&firebase_user_);
542+
EXPECT_EQ(&firebase_user_, user_copy);
543+
}
544+
545+
{
546+
// Copied invalid user
547+
User user_invalid;
548+
User user_invalid_copy(user_invalid);
549+
EXPECT_EQ(user_invalid, user_invalid_copy);
550+
}
551+
552+
{
553+
// Two copied of current_user()
554+
User user1 = firebase_auth_->current_user();
555+
User user2 = firebase_auth_->current_user();
556+
EXPECT_EQ(user1, user2);
557+
}
558+
559+
{
560+
// Two copied of current_user_DEPRECATED()
561+
User* user1 = firebase_auth_->current_user_DEPRECATED();
562+
User* user2 = firebase_auth_->current_user_DEPRECATED();
563+
EXPECT_EQ(&user1, &user2);
564+
}
565+
566+
{
567+
// User from deprecated API and new API
568+
User* user_deprecated = firebase_auth_->current_user_DEPRECATED();
569+
User user_new = firebase_auth_->current_user();
570+
EXPECT_EQ(user_deprecated, user_new);
571+
}
572+
}
573+
524574
} // namespace auth
525575
} // namespace firebase

0 commit comments

Comments
 (0)