summaryrefslogtreecommitdiffstats
path: root/google_apis/gcm/base/mcs_message_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'google_apis/gcm/base/mcs_message_unittest.cc')
-rw-r--r--google_apis/gcm/base/mcs_message_unittest.cc92
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