diff options
Diffstat (limited to 'google_apis/gcm/base/mcs_message_unittest.cc')
-rw-r--r-- | google_apis/gcm/base/mcs_message_unittest.cc | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/google_apis/gcm/base/mcs_message_unittest.cc b/google_apis/gcm/base/mcs_message_unittest.cc new file mode 100644 index 0000000..4d4ef59 --- /dev/null +++ b/google_apis/gcm/base/mcs_message_unittest.cc @@ -0,0 +1,92 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "google_apis/gcm/base/mcs_message.h" + +#include "base/logging.h" +#include "base/message_loop/message_loop.h" +#include "google_apis/gcm/base/mcs_util.h" +#include "google_apis/gcm/protocol/mcs.pb.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace gcm { + +const uint64 kAndroidId = 12345; +const uint64 kSecret = 54321; + +class MCSMessageTest : public testing::Test { + public: + MCSMessageTest(); + virtual ~MCSMessageTest(); + private: + base::MessageLoop message_loop_; +}; + +MCSMessageTest::MCSMessageTest() { +} + +MCSMessageTest::~MCSMessageTest() { +} + +TEST_F(MCSMessageTest, Invalid) { + MCSMessage message; + EXPECT_FALSE(message.IsValid()); +} + +TEST_F(MCSMessageTest, InitInferTag) { + scoped_ptr<mcs_proto::LoginRequest> login_request( + BuildLoginRequest(kAndroidId, kSecret)); + scoped_ptr<google::protobuf::MessageLite> login_copy( + new mcs_proto::LoginRequest(*login_request)); + MCSMessage message(*login_copy); + login_copy.reset(); + ASSERT_TRUE(message.IsValid()); + EXPECT_EQ(kLoginRequestTag, message.tag()); + EXPECT_EQ(login_request->ByteSize(), message.size()); + EXPECT_EQ(login_request->SerializeAsString(), message.SerializeAsString()); + EXPECT_EQ(login_request->SerializeAsString(), + message.GetProtobuf().SerializeAsString()); + login_copy = message.CloneProtobuf(); + EXPECT_EQ(login_request->SerializeAsString(), + login_copy->SerializeAsString()); +} + +TEST_F(MCSMessageTest, InitWithTag) { + scoped_ptr<mcs_proto::LoginRequest> login_request( + BuildLoginRequest(kAndroidId, kSecret)); + scoped_ptr<google::protobuf::MessageLite> login_copy( + new mcs_proto::LoginRequest(*login_request)); + MCSMessage message(kLoginRequestTag, *login_copy); + login_copy.reset(); + ASSERT_TRUE(message.IsValid()); + EXPECT_EQ(kLoginRequestTag, message.tag()); + EXPECT_EQ(login_request->ByteSize(), message.size()); + EXPECT_EQ(login_request->SerializeAsString(), message.SerializeAsString()); + EXPECT_EQ(login_request->SerializeAsString(), + message.GetProtobuf().SerializeAsString()); + login_copy = message.CloneProtobuf(); + EXPECT_EQ(login_request->SerializeAsString(), + login_copy->SerializeAsString()); +} + +TEST_F(MCSMessageTest, InitPassOwnership) { + scoped_ptr<mcs_proto::LoginRequest> login_request( + BuildLoginRequest(kAndroidId, kSecret)); + scoped_ptr<google::protobuf::MessageLite> login_copy( + new mcs_proto::LoginRequest(*login_request)); + MCSMessage message(kLoginRequestTag, + login_copy.PassAs<const google::protobuf::MessageLite>()); + EXPECT_FALSE(login_copy.get()); + ASSERT_TRUE(message.IsValid()); + EXPECT_EQ(kLoginRequestTag, message.tag()); + EXPECT_EQ(login_request->ByteSize(), message.size()); + EXPECT_EQ(login_request->SerializeAsString(), message.SerializeAsString()); + EXPECT_EQ(login_request->SerializeAsString(), + message.GetProtobuf().SerializeAsString()); + login_copy = message.CloneProtobuf(); + EXPECT_EQ(login_request->SerializeAsString(), + login_copy->SerializeAsString()); +} + +} // namespace gcm |