| Index: chrome/browser/chromeos/drive/search_metadata_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/search_metadata_unittest.cc b/chrome/browser/chromeos/drive/search_metadata_unittest.cc
|
| deleted file mode 100644
|
| index 62b4e36302f2d8cad63f431a00c2240aca2f73e5..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/drive/search_metadata_unittest.cc
|
| +++ /dev/null
|
| @@ -1,500 +0,0 @@
|
| -// Copyright (c) 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 "chrome/browser/chromeos/drive/search_metadata.h"
|
| -
|
| -#include "base/files/file_util.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/i18n/string_search.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "components/drive/drive_api_util.h"
|
| -#include "components/drive/drive_test_util.h"
|
| -#include "components/drive/fake_free_disk_space_getter.h"
|
| -#include "components/drive/file_cache.h"
|
| -#include "components/drive/file_system_core_util.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace drive {
|
| -namespace internal {
|
| -
|
| -namespace {
|
| -
|
| -const int kDefaultAtMostNumMatches = 10;
|
| -
|
| -// A simple wrapper for testing FindAndHighlightWrapper(). It just converts the
|
| -// query text parameter to FixedPatternStringSearchIgnoringCaseAndAccents.
|
| -bool FindAndHighlightWrapper(
|
| - const std::string& text,
|
| - const std::string& query_text,
|
| - std::string* highlighted_text) {
|
| - base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents query(
|
| - base::UTF8ToUTF16(query_text));
|
| - return FindAndHighlight(text, &query, highlighted_text);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class SearchMetadataTest : public testing::Test {
|
| - protected:
|
| - void SetUp() override {
|
| - ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| - fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter);
|
| -
|
| - metadata_storage_.reset(new ResourceMetadataStorage(
|
| - temp_dir_.path(), base::ThreadTaskRunnerHandle::Get().get()));
|
| - ASSERT_TRUE(metadata_storage_->Initialize());
|
| -
|
| - cache_.reset(new FileCache(metadata_storage_.get(),
|
| - temp_dir_.path(),
|
| - base::ThreadTaskRunnerHandle::Get().get(),
|
| - fake_free_disk_space_getter_.get()));
|
| - ASSERT_TRUE(cache_->Initialize());
|
| -
|
| - resource_metadata_.reset(
|
| - new ResourceMetadata(metadata_storage_.get(),
|
| - cache_.get(),
|
| - base::ThreadTaskRunnerHandle::Get().get()));
|
| - ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->Initialize());
|
| -
|
| - AddEntriesToMetadata();
|
| - }
|
| -
|
| - void AddEntriesToMetadata() {
|
| - base::FilePath temp_file;
|
| - EXPECT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file));
|
| - const std::string temp_file_md5 = "md5";
|
| -
|
| - ResourceEntry entry;
|
| - std::string local_id;
|
| -
|
| - // drive/root
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->GetIdByPath(
|
| - util::GetDriveMyDriveRootPath(), &local_id));
|
| - const std::string root_local_id = local_id;
|
| -
|
| - // drive/root/Directory 1
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(GetDirectoryEntry(
|
| - "Directory 1", "dir1", 1, root_local_id), &local_id));
|
| - const std::string dir1_local_id = local_id;
|
| -
|
| - // drive/root/Directory 1/SubDirectory File 1.txt
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(GetFileEntry(
|
| - "SubDirectory File 1.txt", "file1a", 2, dir1_local_id), &local_id));
|
| - EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| - local_id, temp_file_md5, temp_file, FileCache::FILE_OPERATION_COPY));
|
| -
|
| - // drive/root/Directory 1/Shared To The Account Owner.txt
|
| - entry = GetFileEntry(
|
| - "Shared To The Account Owner.txt", "file1b", 3, dir1_local_id);
|
| - entry.set_shared_with_me(true);
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(entry, &local_id));
|
| -
|
| - // drive/root/Directory 2 excludeDir-test
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(GetDirectoryEntry(
|
| - "Directory 2 excludeDir-test", "dir2", 4, root_local_id), &local_id));
|
| -
|
| - // drive/root/Slash \xE2\x88\x95 in directory
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
|
| - GetDirectoryEntry("Slash \xE2\x88\x95 in directory", "dir3", 5,
|
| - root_local_id), &local_id));
|
| - const std::string dir3_local_id = local_id;
|
| -
|
| - // drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(GetFileEntry(
|
| - "Slash SubDir File.txt", "file3a", 6, dir3_local_id), &local_id));
|
| -
|
| - // drive/root/File 2.txt
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(GetFileEntry(
|
| - "File 2.txt", "file2", 7, root_local_id), &local_id));
|
| - EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| - local_id, temp_file_md5, temp_file, FileCache::FILE_OPERATION_COPY));
|
| -
|
| - // drive/root/Document 1 excludeDir-test
|
| - entry = GetFileEntry(
|
| - "Document 1 excludeDir-test", "doc1", 8, root_local_id);
|
| - entry.mutable_file_specific_info()->set_is_hosted_document(true);
|
| - entry.mutable_file_specific_info()->set_document_extension(".gdoc");
|
| - entry.mutable_file_specific_info()->set_content_mime_type(
|
| - drive::util::kGoogleDocumentMimeType);
|
| - EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(entry, &local_id));
|
| - }
|
| -
|
| - ResourceEntry GetFileEntry(const std::string& name,
|
| - const std::string& resource_id,
|
| - int64 last_accessed,
|
| - const std::string& parent_local_id) {
|
| - ResourceEntry entry;
|
| - entry.set_title(name);
|
| - entry.set_resource_id(resource_id);
|
| - entry.set_parent_local_id(parent_local_id);
|
| - entry.mutable_file_info()->set_last_accessed(last_accessed);
|
| - return entry;
|
| - }
|
| -
|
| - ResourceEntry GetDirectoryEntry(const std::string& name,
|
| - const std::string& resource_id,
|
| - int64 last_accessed,
|
| - const std::string& parent_local_id) {
|
| - ResourceEntry entry;
|
| - entry.set_title(name);
|
| - entry.set_resource_id(resource_id);
|
| - entry.set_parent_local_id(parent_local_id);
|
| - entry.mutable_file_info()->set_last_accessed(last_accessed);
|
| - entry.mutable_file_info()->set_is_directory(true);
|
| - return entry;
|
| - }
|
| -
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| - base::ScopedTempDir temp_dir_;
|
| - scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_;
|
| - scoped_ptr<ResourceMetadataStorage,
|
| - test_util::DestroyHelperForTests> metadata_storage_;
|
| - scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests>
|
| - resource_metadata_;
|
| - scoped_ptr<FileCache, test_util::DestroyHelperForTests> cache_;
|
| -};
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_ZeroMatches) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(),
|
| - "NonExistent", base::Bind(&MatchesType, SEARCH_METADATA_ALL),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(0U, result->size());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_RegularFile) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(),
|
| - "SubDirectory File 1.txt", base::Bind(&MatchesType, SEARCH_METADATA_ALL),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| - EXPECT_EQ("drive/root/Directory 1/SubDirectory File 1.txt",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -// This test checks if |FindAndHighlightWrapper| does case-insensitive search.
|
| -// Tricker test cases for |FindAndHighlightWrapper| can be found below.
|
| -TEST_F(SearchMetadataTest, SearchMetadata_CaseInsensitiveSearch) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - // The query is all in lower case.
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(),
|
| - "subdirectory file 1.txt", base::Bind(&MatchesType, SEARCH_METADATA_ALL),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| - EXPECT_EQ("drive/root/Directory 1/SubDirectory File 1.txt",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_RegularFiles) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), "SubDir",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_ALL), kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(2U, result->size());
|
| -
|
| - // All base names should contain "File". The results should be sorted by the
|
| - // last accessed time in descending order.
|
| - EXPECT_EQ("drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| - EXPECT_EQ("drive/root/Directory 1/SubDirectory File 1.txt",
|
| - result->at(1).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_AtMostOneFile) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - // There are two files matching "SubDir" but only one file should be
|
| - // returned.
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), "SubDir",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_ALL),
|
| - 1, // at_most_num_matches
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| - EXPECT_EQ("drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_Directory) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(),
|
| - "Directory 1", base::Bind(&MatchesType, SEARCH_METADATA_ALL),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| - EXPECT_EQ("drive/root/Directory 1", result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_HostedDocument) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), "Document",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_ALL), kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| -
|
| - EXPECT_EQ("drive/root/Document 1 excludeDir-test.gdoc",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_ExcludeHostedDocument) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), "Document",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_EXCLUDE_HOSTED_DOCUMENTS),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(0U, result->size());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_SharedWithMe) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), "",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_SHARED_WITH_ME),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| - EXPECT_EQ("drive/root/Directory 1/Shared To The Account Owner.txt",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_FileAndDirectory) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(),
|
| - "excludeDir-test", base::Bind(&MatchesType, SEARCH_METADATA_ALL),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(2U, result->size());
|
| -
|
| - EXPECT_EQ("drive/root/Document 1 excludeDir-test.gdoc",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| - EXPECT_EQ("drive/root/Directory 2 excludeDir-test",
|
| - result->at(1).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_ExcludeDirectory) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(),
|
| - "excludeDir-test",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_EXCLUDE_DIRECTORIES),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_EQ(1U, result->size());
|
| -
|
| - EXPECT_EQ("drive/root/Document 1 excludeDir-test.gdoc",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -// "drive", "drive/root", "drive/other" should be excluded.
|
| -TEST_F(SearchMetadataTest, SearchMetadata_ExcludeSpecialDirectories) {
|
| - const char* const kQueries[] = { "drive", "root", "other" };
|
| - for (size_t i = 0; i < arraysize(kQueries); ++i) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - const std::string query = kQueries[i];
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), query,
|
| - base::Bind(&MatchesType, SEARCH_METADATA_ALL), kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_TRUE(result);
|
| - ASSERT_TRUE(result->empty()) << ": " << query << " should not match";
|
| - }
|
| -}
|
| -
|
| -TEST_F(SearchMetadataTest, SearchMetadata_Offline) {
|
| - FileError error = FILE_ERROR_FAILED;
|
| - scoped_ptr<MetadataSearchResultVector> result;
|
| -
|
| - SearchMetadata(
|
| - base::ThreadTaskRunnerHandle::Get(), resource_metadata_.get(), "",
|
| - base::Bind(&MatchesType, SEARCH_METADATA_OFFLINE),
|
| - kDefaultAtMostNumMatches,
|
| - google_apis::test_util::CreateCopyResultCallback(&error, &result));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(FILE_ERROR_OK, error);
|
| - ASSERT_EQ(3U, result->size());
|
| -
|
| - // This is not included in the cache but is a hosted document.
|
| - EXPECT_EQ("drive/root/Document 1 excludeDir-test.gdoc",
|
| - result->at(0).path.AsUTF8Unsafe());
|
| -
|
| - EXPECT_EQ("drive/root/File 2.txt",
|
| - result->at(1).path.AsUTF8Unsafe());
|
| - EXPECT_EQ("drive/root/Directory 1/SubDirectory File 1.txt",
|
| - result->at(2).path.AsUTF8Unsafe());
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_ZeroMatches) {
|
| - std::string highlighted_text;
|
| - EXPECT_FALSE(FindAndHighlightWrapper("text", "query", &highlighted_text));
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_EmptyText) {
|
| - std::string highlighted_text;
|
| - EXPECT_FALSE(FindAndHighlightWrapper("", "query", &highlighted_text));
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_FullMatch) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("hello", "hello", &highlighted_text));
|
| - EXPECT_EQ("<b>hello</b>", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_StartWith) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("hello, world", "hello",
|
| - &highlighted_text));
|
| - EXPECT_EQ("<b>hello</b>, world", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_EndWith) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("hello, world", "world",
|
| - &highlighted_text));
|
| - EXPECT_EQ("hello, <b>world</b>", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_InTheMiddle) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("yo hello, world", "hello",
|
| - &highlighted_text));
|
| - EXPECT_EQ("yo <b>hello</b>, world", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_MultipeMatches) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("yoyoyoyoy", "yoy", &highlighted_text));
|
| - // Only the first match is highlighted.
|
| - EXPECT_EQ("<b>yoy</b>oyoyoy", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_IgnoreCase) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("HeLLo", "hello", &highlighted_text));
|
| - EXPECT_EQ("<b>HeLLo</b>", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_IgnoreCaseNonASCII) {
|
| - std::string highlighted_text;
|
| -
|
| - // Case and accent ignorance in Greek. Find "socra" in "Socra'tes".
|
| - EXPECT_TRUE(FindAndHighlightWrapper(
|
| - "\xCE\xA3\xCF\x89\xCE\xBA\xCF\x81\xCE\xAC\xCF\x84\xCE\xB7\xCF\x82",
|
| - "\xCF\x83\xCF\x89\xCE\xBA\xCF\x81\xCE\xB1", &highlighted_text));
|
| - EXPECT_EQ(
|
| - "<b>\xCE\xA3\xCF\x89\xCE\xBA\xCF\x81\xCE\xAC</b>\xCF\x84\xCE\xB7\xCF\x82",
|
| - highlighted_text);
|
| -
|
| - // In Japanese characters.
|
| - // Find Hiragana "pi" + "(small)ya" in Katakana "hi" + semi-voiced-mark + "ya"
|
| - EXPECT_TRUE(FindAndHighlightWrapper(
|
| - "\xE3\x81\xB2\xE3\x82\x9A\xE3\x82\x83\xE3\x83\xBC",
|
| - "\xE3\x83\x94\xE3\x83\xA4",
|
| - &highlighted_text));
|
| - EXPECT_EQ(
|
| - "<b>\xE3\x81\xB2\xE3\x82\x9A\xE3\x82\x83</b>\xE3\x83\xBC",
|
| - highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, MultiTextBySingleQuery) {
|
| - base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents query(
|
| - base::UTF8ToUTF16("hello"));
|
| -
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlight("hello", &query, &highlighted_text));
|
| - EXPECT_EQ("<b>hello</b>", highlighted_text);
|
| - EXPECT_FALSE(FindAndHighlight("goodbye", &query, &highlighted_text));
|
| - EXPECT_TRUE(FindAndHighlight("1hello2", &query, &highlighted_text));
|
| - EXPECT_EQ("1<b>hello</b>2", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_MetaChars) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("<hello>", "hello", &highlighted_text));
|
| - EXPECT_EQ("<<b>hello</b>>", highlighted_text);
|
| -}
|
| -
|
| -TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) {
|
| - std::string highlighted_text;
|
| - EXPECT_TRUE(FindAndHighlightWrapper("a&b&c&d", "b&c", &highlighted_text));
|
| - EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text);
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace drive
|
|
|