Index: chrome/browser/password_manager/keyring_proxy/message_reader_unittest.cc |
=================================================================== |
--- chrome/browser/password_manager/keyring_proxy/message_reader_unittest.cc (revision 0) |
+++ chrome/browser/password_manager/keyring_proxy/message_reader_unittest.cc (revision 0) |
@@ -0,0 +1,123 @@ |
+// Copyright (c) 2011 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 <string.h> |
+ |
+#include "chrome/browser/password_manager/keyring_proxy/message_reader.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace keyring_proxy { |
+ |
+static size_t HandleData(MessageReader* reader, const char* data) { |
+ return reader->HandleData(data, strlen(data)); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, StartsIncomplete) { |
+ MessageReader reader; |
+ EXPECT_FALSE(reader.is_complete()); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesEmptyMessage) { |
+ MessageReader reader; |
+ EXPECT_EQ(1u, HandleData(&reader, "\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ EXPECT_EQ(0u, reader.lines().size()); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesOneLineMessage) { |
+ MessageReader reader; |
+ EXPECT_EQ(5u, HandleData(&reader, "foo\n\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(1u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesOneLineMessageSplit) { |
+ MessageReader reader; |
+ EXPECT_EQ(4u, HandleData(&reader, "foo\n")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(1u, HandleData(&reader, "\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(1u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesOneLineMessageSplitInLine) { |
+ MessageReader reader; |
+ EXPECT_EQ(3u, HandleData(&reader, "foo")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(4u, HandleData(&reader, "bar\n")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(1u, HandleData(&reader, "\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(1u, reader.lines().size()); |
+ EXPECT_EQ("foobar", reader.lines()[0]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesOneLineMessageSplitEndLine) { |
+ MessageReader reader; |
+ EXPECT_EQ(6u, HandleData(&reader, "foobar")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(1u, HandleData(&reader, "\n")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(1u, HandleData(&reader, "\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(1u, reader.lines().size()); |
+ EXPECT_EQ("foobar", reader.lines()[0]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesTwoLineMessage) { |
+ MessageReader reader; |
+ EXPECT_EQ(9u, HandleData(&reader, "foo\nbar\n\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(2u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+ EXPECT_EQ("bar", reader.lines()[1]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesTwoLineMessageSplitOnce) { |
+ MessageReader reader; |
+ EXPECT_EQ(7u, HandleData(&reader, "foo\nbar")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(2u, HandleData(&reader, "\n\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(2u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+ EXPECT_EQ("bar", reader.lines()[1]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, HandlesTwoLineMessageSplitTwice) { |
+ MessageReader reader; |
+ EXPECT_EQ(3u, HandleData(&reader, "foo")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(4u, HandleData(&reader, "\nbar")); |
+ ASSERT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(2u, HandleData(&reader, "\n\n")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(2u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+ EXPECT_EQ("bar", reader.lines()[1]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, IgnoresExtraData) { |
+ MessageReader reader; |
+ EXPECT_EQ(9u, HandleData(&reader, "foo\nbar\n\nbaz")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(2u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+ EXPECT_EQ("bar", reader.lines()[1]); |
+} |
+ |
+TEST(KeyringProxyMessageReaderTest, IgnoresExtraDataSplit) { |
+ MessageReader reader; |
+ EXPECT_EQ(8u, HandleData(&reader, "foo\nbar\n")); |
+ EXPECT_FALSE(reader.is_complete()); |
+ EXPECT_EQ(1u, HandleData(&reader, "\nbaz")); |
+ EXPECT_TRUE(reader.is_complete()); |
+ ASSERT_EQ(2u, reader.lines().size()); |
+ EXPECT_EQ("foo", reader.lines()[0]); |
+ EXPECT_EQ("bar", reader.lines()[1]); |
+} |
+ |
+} // namespace keyring_proxy |
Property changes on: chrome/browser/password_manager/keyring_proxy/message_reader_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |