| Index: chrome/browser/android/contextualsearch/search_action_unittest.cc
|
| diff --git a/chrome/browser/android/contextualsearch/search_action_unittest.cc b/chrome/browser/android/contextualsearch/search_action_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..43af582b400d2f8516f10aa537e31339494234b0
|
| --- /dev/null
|
| +++ b/chrome/browser/android/contextualsearch/search_action_unittest.cc
|
| @@ -0,0 +1,89 @@
|
| +// Copyright 2016 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 "chrome/browser/android/contextualsearch/search_action.h"
|
| +
|
| +#include "base/gtest_prod_util.h"
|
| +#include "base/strings/utf_string_conversions.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +using base::string16;
|
| +using base::UTF8ToUTF16;
|
| +using std::pair;
|
| +
|
| +// Tests parts of the SearchAction class.
|
| +// This is part of the 2016-refactoring (crbug.com/624609,
|
| +// go/cs-refactoring-2016).
|
| +class SearchActionTest : public testing::Test {
|
| + public:
|
| + SearchActionTest() {}
|
| + ~SearchActionTest() override {}
|
| +
|
| + // The class under test.
|
| + std::unique_ptr<SearchAction> search_action_;
|
| +
|
| + protected:
|
| + void SetUp() override { search_action_.reset(new SearchAction()); }
|
| + void TearDown() override {}
|
| +
|
| + // Helper to set the context to the given sample and focus on |focus|.
|
| + void SetContext(std::string sample, std::string focus);
|
| +};
|
| +
|
| +void SearchActionTest::SetContext(std::string sample, std::string focus) {
|
| + size_t offset = sample.find(focus);
|
| + ASSERT_NE(offset, std::string::npos);
|
| + search_action_->SetContext(sample, offset, offset + focus.length());
|
| +}
|
| +
|
| +TEST_F(SearchActionTest, IsValidCharacterTest) {
|
| + EXPECT_TRUE(search_action_->IsValidCharacter('a'));
|
| + EXPECT_TRUE(search_action_->IsValidCharacter('A'));
|
| + EXPECT_TRUE(search_action_->IsValidCharacter('0'));
|
| +
|
| + EXPECT_FALSE(search_action_->IsValidCharacter(','));
|
| + EXPECT_FALSE(search_action_->IsValidCharacter(' '));
|
| + EXPECT_FALSE(search_action_->IsValidCharacter('-'));
|
| +}
|
| +
|
| +TEST_F(SearchActionTest, FindFocusedWordTest) {
|
| + // Test finding "word" within this sample string.
|
| + std::string sample = "Sample word, text";
|
| +
|
| + // Any range inside the word but before the end should return the word.
|
| + search_action_->SetContext(sample, 7, 7);
|
| + EXPECT_EQ("word", search_action_->FindFocusedWord());
|
| + search_action_->SetContext(sample, 10, 10);
|
| + EXPECT_EQ("word", search_action_->FindFocusedWord());
|
| + search_action_->SetContext(sample, 7, 11);
|
| + EXPECT_EQ("word", search_action_->FindFocusedWord());
|
| +
|
| + // A range just past the word returns an empty string.
|
| + search_action_->SetContext(sample, 11, 11);
|
| + EXPECT_EQ("", search_action_->FindFocusedWord());
|
| +}
|
| +
|
| +TEST_F(SearchActionTest, SampleSurroundingsTest) {
|
| + std::string focus = "focus";
|
| + std::string sample = "987654321focus123456789";
|
| +
|
| + // Sample big enough to include both ends.
|
| + SetContext(sample, focus);
|
| + EXPECT_EQ(sample, search_action_->GetSampleText(100));
|
| +
|
| + // Must trim both ends, trimming 6 off each end.
|
| + EXPECT_EQ("321focus123", search_action_->GetSampleText(12));
|
| +
|
| + // With focus near the beginning, extra is shifted to the end.
|
| + SetContext("321focus123456789", focus);
|
| + EXPECT_EQ("321focus12345", search_action_->GetSampleText(13));
|
| +
|
| + // With focus near the end, extra is shifted to the beginning.
|
| + SetContext("987654321focus123", focus);
|
| + EXPECT_EQ("54321focus123", search_action_->GetSampleText(13));
|
| +
|
| + // Requesting less than the focus.
|
| + SetContext("focus", focus);
|
| + EXPECT_EQ("c", search_action_->GetSampleText(1));
|
| +}
|
|
|