| 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
|
|
|
|
|