| Index: ui/app_list/search/history_data_store_unittest.cc
|
| diff --git a/ui/app_list/search/history_data_store_unittest.cc b/ui/app_list/search/history_data_store_unittest.cc
|
| deleted file mode 100644
|
| index 4e7c2a7bc68844e534a03b1f8cc5b9e9d6df71b4..0000000000000000000000000000000000000000
|
| --- a/ui/app_list/search/history_data_store_unittest.cc
|
| +++ /dev/null
|
| @@ -1,181 +0,0 @@
|
| -// 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 "base/basictypes.h"
|
| -#include "base/bind.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/threading/sequenced_worker_pool.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/app_list/search/dictionary_data_store.h"
|
| -#include "ui/app_list/search/history_data.h"
|
| -#include "ui/app_list/search/history_data_store.h"
|
| -
|
| -namespace app_list {
|
| -namespace test {
|
| -
|
| -namespace {
|
| -
|
| -std::string GetDataContent(const HistoryData::Data& data) {
|
| - std::string str = std::string("p:") + data.primary + ";s:";
|
| - bool first = true;
|
| - for (HistoryData::SecondaryDeque::const_iterator it = data.secondary.begin();
|
| - it != data.secondary.end();
|
| - ++it) {
|
| - if (first)
|
| - first = false;
|
| - else
|
| - str += ',';
|
| -
|
| - str += *it;
|
| - }
|
| -
|
| - return str;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class HistoryDataStoreTest : public testing::Test {
|
| - public:
|
| - HistoryDataStoreTest() {}
|
| - virtual ~HistoryDataStoreTest() {}
|
| -
|
| - // testing::Test overrides:
|
| - virtual void SetUp() override {
|
| - worker_pool_ = new base::SequencedWorkerPool(1, "AppLauncherTest");
|
| - ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| - }
|
| - virtual void TearDown() override {
|
| - // Release |store_| while ui loop is still running.
|
| - store_ = NULL;
|
| - }
|
| -
|
| - void OpenStore(const std::string& file_name) {
|
| - data_file_ = temp_dir_.path().AppendASCII(file_name);
|
| - store_ = new HistoryDataStore(scoped_refptr<DictionaryDataStore>(
|
| - new DictionaryDataStore(data_file_, worker_pool_.get())));
|
| - Load();
|
| - }
|
| -
|
| - void Flush() { store_->Flush(DictionaryDataStore::OnFlushedCallback()); }
|
| -
|
| - void Load() {
|
| - store_->Load(
|
| - base::Bind(&HistoryDataStoreTest::OnRead, base::Unretained(this)));
|
| - run_loop_.reset(new base::RunLoop);
|
| - run_loop_->Run();
|
| - run_loop_.reset();
|
| - }
|
| -
|
| - void WriteDataFile(const std::string& file_name, const std::string& data) {
|
| - base::WriteFile(
|
| - temp_dir_.path().AppendASCII(file_name), data.c_str(), data.size());
|
| - }
|
| -
|
| - HistoryDataStore* store() { return store_.get(); }
|
| - const HistoryData::Associations& associations() const {
|
| - return associations_;
|
| - }
|
| -
|
| - private:
|
| - void OnRead(scoped_ptr<HistoryData::Associations> associations) {
|
| - associations_.clear();
|
| - if (associations)
|
| - associations->swap(associations_);
|
| -
|
| - if (run_loop_)
|
| - run_loop_->Quit();
|
| - }
|
| -
|
| - base::MessageLoopForUI message_loop_;
|
| - base::ScopedTempDir temp_dir_;
|
| - base::FilePath data_file_;
|
| - scoped_ptr<base::RunLoop> run_loop_;
|
| - scoped_refptr<base::SequencedWorkerPool> worker_pool_;
|
| -
|
| - scoped_refptr<HistoryDataStore> store_;
|
| - HistoryData::Associations associations_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(HistoryDataStoreTest);
|
| -};
|
| -
|
| -TEST_F(HistoryDataStoreTest, NewFile) {
|
| - OpenStore("new_data_file.json");
|
| - EXPECT_TRUE(associations().empty());
|
| -}
|
| -
|
| -TEST_F(HistoryDataStoreTest, BadFile) {
|
| - const char kDataFile[] = "invalid_data_file";
|
| - WriteDataFile(kDataFile, "invalid json");
|
| -
|
| - OpenStore(kDataFile);
|
| - EXPECT_TRUE(associations().empty());
|
| -}
|
| -
|
| -TEST_F(HistoryDataStoreTest, GoodFile) {
|
| - const char kDataFile[] = "good_data_file.json";
|
| - const char kGoodJson[] =
|
| - "{"
|
| - "\"version\": \"1\","
|
| - "\"associations\": {"
|
| - "\"query\": {"
|
| - "\"p\": \"primary\","
|
| - "\"s\": [\"secondary1\",\"secondary2\"],"
|
| - "\"t\": \"123\""
|
| - "}"
|
| - "}"
|
| - "}";
|
| - WriteDataFile(kDataFile, kGoodJson);
|
| -
|
| - OpenStore(kDataFile);
|
| - EXPECT_FALSE(associations().empty());
|
| - EXPECT_EQ(1u, associations().size());
|
| -
|
| - HistoryData::Associations::const_iterator it = associations().find("query");
|
| - EXPECT_TRUE(it != associations().end());
|
| - EXPECT_EQ("p:primary;s:secondary1,secondary2", GetDataContent(it->second));
|
| -}
|
| -
|
| -TEST_F(HistoryDataStoreTest, Change) {
|
| - const char kDataFile[] = "change_test.json";
|
| -
|
| - OpenStore(kDataFile);
|
| - EXPECT_TRUE(associations().empty());
|
| -
|
| - const char kQuery[] = "query";
|
| - const base::Time now = base::Time::Now();
|
| - store()->SetPrimary(kQuery, "primary");
|
| - store()->SetUpdateTime(kQuery, now);
|
| - Flush();
|
| - Load();
|
| - EXPECT_EQ(1u, associations().size());
|
| - HistoryData::Associations::const_iterator it = associations().find(kQuery);
|
| - EXPECT_TRUE(it != associations().end());
|
| - EXPECT_EQ("primary", it->second.primary);
|
| - EXPECT_EQ(0u, it->second.secondary.size());
|
| - EXPECT_EQ(now, it->second.update_time);
|
| -
|
| - HistoryData::SecondaryDeque secondary;
|
| - secondary.push_back("s1");
|
| - secondary.push_back("s2");
|
| - store()->SetSecondary(kQuery, secondary);
|
| - Flush();
|
| - Load();
|
| - EXPECT_EQ(1u, associations().size());
|
| - it = associations().find(kQuery);
|
| - EXPECT_TRUE(it != associations().end());
|
| - EXPECT_EQ("p:primary;s:s1,s2", GetDataContent(it->second));
|
| - EXPECT_EQ(now, it->second.update_time);
|
| -
|
| - store()->Delete(kQuery);
|
| - Flush();
|
| - Load();
|
| - EXPECT_TRUE(associations().empty());
|
| -}
|
| -
|
| -} // namespace test
|
| -} // namespace app_list
|
|
|