Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: third_party/libaddressinput/chromium/cpp/test/retriever_test.cc

Issue 389863002: Remove Chrome's own version of libaddressinput in favor of the upstream. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/libaddressinput/chromium/cpp/test/retriever_test.cc
diff --git a/third_party/libaddressinput/chromium/cpp/test/retriever_test.cc b/third_party/libaddressinput/chromium/cpp/test/retriever_test.cc
deleted file mode 100644
index 90c9099069b195a641bb729dddcc22c2d266971c..0000000000000000000000000000000000000000
--- a/third_party/libaddressinput/chromium/cpp/test/retriever_test.cc
+++ /dev/null
@@ -1,335 +0,0 @@
-// Copyright (C) 2013 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "retriever.h"
-
-#include <libaddressinput/callback.h>
-#include <libaddressinput/downloader.h>
-#include <libaddressinput/storage.h>
-#include <libaddressinput/util/scoped_ptr.h>
-
-#include <cstddef>
-#include <ctime>
-#include <string>
-
-#include <gtest/gtest.h>
-
-#include "fake_downloader.h"
-#include "fake_storage.h"
-#include "region_data_constants.h"
-#include "util/string_util.h"
-
-namespace i18n {
-namespace addressinput {
-
-namespace {
-
-const char kKey[] = "data/CA";
-
-// Empty data that the downloader can return.
-const char kEmptyData[] = "{}";
-
-// The MD5 checksum for kEmptyData. Retriever uses MD5 to validate data
-// integrity.
-const char kEmptyDataChecksum[] = "99914b932bd37a50b983c5e7c90ae93b";
-
-scoped_ptr<std::string> Wrap(const std::string& data,
- const std::string& checksum,
- const std::string& timestamp) {
- return make_scoped_ptr(new std::string(
- data + "\n" + "checksum=" + checksum + "\n" + "timestamp=" + timestamp));
-}
-
-} // namespace
-
-// Tests for Retriever object.
-class RetrieverTest : public testing::Test {
- protected:
- RetrieverTest()
- : storage_(NULL),
- retriever_(),
- success_(false),
- key_(),
- data_(),
- reject_empty_data_(false) {
- ResetRetriever(FakeDownloader::kFakeDataUrl);
- }
-
- virtual ~RetrieverTest() {}
-
- scoped_ptr<Retriever::Callback> BuildCallback() {
- return ::i18n::addressinput::BuildCallback(
- this, &RetrieverTest::OnDataReady);
- }
-
- void ResetRetriever(const std::string& url) {
- storage_ = new FakeStorage;
- retriever_.reset(
- new Retriever(url,
- scoped_ptr<Downloader>(new FakeDownloader),
- scoped_ptr<Storage>(storage_)));
- }
-
- std::string GetUrlForKey(const std::string& key) {
- return retriever_->GetUrlForKey(key);
- }
-
- std::string GetKeyForUrl(const std::string& url) {
- return retriever_->GetKeyForUrl(url);
- }
-
- FakeStorage* storage_; // Owned by |retriever_|.
- scoped_ptr<Retriever> retriever_;
- bool success_;
- std::string key_;
- std::string data_;
- bool reject_empty_data_;
-
- private:
- bool OnDataReady(bool success,
- const std::string& key,
- const std::string& data) {
- success_ = success;
- key_ = key;
- data_ = data;
- return !reject_empty_data_ || data_ != kEmptyData;
- }
-};
-
-TEST_F(RetrieverTest, RegionHasData) {
- const std::vector<std::string>& region_codes =
- RegionDataConstants::GetRegionCodes();
- for (size_t i = 0; i < region_codes.size(); ++i) {
- std::string key = "data/" + region_codes[i];
- SCOPED_TRACE("For key: " + key);
-
- retriever_->Retrieve(key, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(key, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
- }
-}
-
-TEST_F(RetrieverTest, RetrieveData) {
- retriever_->Retrieve(kKey, BuildCallback());
-
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, ReadDataFromStorage) {
- retriever_->Retrieve(kKey, BuildCallback());
- retriever_->Retrieve(kKey, BuildCallback());
-
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, MissingKeyReturnsEmptyData) {
- static const char kMissingKey[] = "junk";
-
- retriever_->Retrieve(kMissingKey, BuildCallback());
-
- EXPECT_TRUE(success_);
- EXPECT_EQ(kMissingKey, key_);
- EXPECT_EQ(kEmptyData, data_);
-}
-
-// The downloader that always fails.
-class FaultyDownloader : public Downloader {
- public:
- FaultyDownloader() {}
- virtual ~FaultyDownloader() {}
-
- // Downloader implementation.
- virtual void Download(const std::string& url,
- scoped_ptr<Callback> downloaded) {
- (*downloaded)(false, url, make_scoped_ptr(new std::string("garbage")));
- }
-};
-
-TEST_F(RetrieverTest, FaultyDownloader) {
- Retriever bad_retriever(FakeDownloader::kFakeDataUrl,
- scoped_ptr<Downloader>(new FaultyDownloader),
- scoped_ptr<Storage>(new FakeStorage));
- bad_retriever.Retrieve(kKey, BuildCallback());
-
- EXPECT_FALSE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_TRUE(data_.empty());
-}
-
-TEST_F(RetrieverTest, FaultyDownloaderFallback) {
- Retriever bad_retriever(FakeDownloader::kFakeDataUrl,
- scoped_ptr<Downloader>(new FaultyDownloader),
- scoped_ptr<Storage>(new FakeStorage));
- const char kFallbackDataKey[] = "data/US";
- bad_retriever.Retrieve(kFallbackDataKey, BuildCallback());
-
- EXPECT_TRUE(success_);
- EXPECT_EQ(kFallbackDataKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, NoChecksumAndTimestampWillRedownload) {
- storage_->Put(kKey, make_scoped_ptr(new std::string(kEmptyData)));
- retriever_->Retrieve(kKey, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, ChecksumAndTimestampWillNotRedownload) {
- storage_->Put(kKey,
- Wrap(kEmptyData, kEmptyDataChecksum, TimeToString(time(NULL))));
- retriever_->Retrieve(kKey, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_EQ(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, OldTimestampWillRedownload) {
- storage_->Put(kKey, Wrap(kEmptyData, kEmptyDataChecksum, "0"));
- retriever_->Retrieve(kKey, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, JunkDataRedownloads) {
- ResetRetriever(std::string(FakeDownloader::kFakeDataUrl));
- storage_->Put(kKey,
- Wrap(kEmptyData, kEmptyDataChecksum, TimeToString(time(NULL))));
- reject_empty_data_ = true;
- retriever_->Retrieve(kKey, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kEmptyData, data_);
-
- // After verifying it's correct, it's saved in storage.
- EXPECT_EQ(data_, storage_->SynchronousGet(kKey).substr(0, data_.size()));
-}
-
-TEST_F(RetrieverTest, JunkDataIsntStored) {
- // Data the retriever accepts is stored in |storage_|.
- ResetRetriever("test:///");
- const std::string not_a_key("foobar");
- retriever_->Retrieve(not_a_key, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(not_a_key, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_EQ(kEmptyData, data_);
- EXPECT_EQ(
- kEmptyData,
- storage_->SynchronousGet(not_a_key).substr(0, sizeof kEmptyData - 1));
-
- // Try again, but this time reject the data.
- reject_empty_data_ = true;
- ResetRetriever("test:///");
- EXPECT_EQ("", storage_->SynchronousGet(not_a_key));
- retriever_->Retrieve(not_a_key, BuildCallback());
-
- // Falls back to the fallback, which doesn't have data for Canada.
- EXPECT_FALSE(success_);
- EXPECT_EQ(not_a_key, key_);
- EXPECT_TRUE(data_.empty());
-
- // Since the retriever is rejecting empty data, it shouldn't be stored.
- EXPECT_EQ("", storage_->SynchronousGet(not_a_key));
-}
-
-TEST_F(RetrieverTest, OldTimestampOkIfDownloadFails) {
- storage_ = new FakeStorage;
- Retriever bad_retriever(FakeDownloader::kFakeDataUrl,
- scoped_ptr<Downloader>(new FaultyDownloader),
- scoped_ptr<Storage>(storage_));
- storage_->Put(kKey, Wrap(kEmptyData, kEmptyDataChecksum, "0"));
- bad_retriever.Retrieve(kKey, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_EQ(kEmptyData, data_);
-}
-
-TEST_F(RetrieverTest, WrongChecksumWillRedownload) {
- static const char kNonEmptyData[] = "{\"non-empty\": \"data\"}";
- storage_->Put(
- kKey,
- Wrap(kNonEmptyData, kEmptyDataChecksum, TimeToString(time(NULL))));
- retriever_->Retrieve(kKey, BuildCallback());
- EXPECT_TRUE(success_);
- EXPECT_EQ(kKey, key_);
- EXPECT_FALSE(data_.empty());
- EXPECT_NE(kNonEmptyData, data_);
-}
-
-// The downloader that doesn't get back to you.
-class HangingDownloader : public Downloader {
- public:
- HangingDownloader() {}
- virtual ~HangingDownloader() {}
-
- // Downloader implementation.
- virtual void Download(const std::string& url,
- scoped_ptr<Callback> downloaded) {}
-};
-
-TEST_F(RetrieverTest, RequestsDontStack) {
- Retriever slow_retriever(FakeDownloader::kFakeDataUrl,
- scoped_ptr<Downloader>(new HangingDownloader),
- scoped_ptr<Storage>(new FakeStorage));
-
- slow_retriever.Retrieve(kKey, BuildCallback());
- EXPECT_FALSE(success_);
- EXPECT_TRUE(key_.empty());
-
- EXPECT_NO_FATAL_FAILURE(slow_retriever.Retrieve(kKey, BuildCallback()));
-}
-
-TEST_F(RetrieverTest, GetUrlForKey) {
- ResetRetriever("test:///");
- EXPECT_EQ("test:///", GetUrlForKey(""));
- EXPECT_EQ("test:///data", GetUrlForKey("data"));
- EXPECT_EQ("test:///data/US", GetUrlForKey("data/US"));
- EXPECT_EQ("test:///data/CA--fr", GetUrlForKey("data/CA--fr"));
-}
-
-TEST_F(RetrieverTest, GetKeyForUrl) {
- ResetRetriever("test:///");
- EXPECT_EQ("", GetKeyForUrl("test://"));
- EXPECT_EQ("", GetKeyForUrl("http://www.google.com/"));
- EXPECT_EQ("", GetKeyForUrl(""));
- EXPECT_EQ("", GetKeyForUrl("test:///"));
- EXPECT_EQ("data", GetKeyForUrl("test:///data"));
- EXPECT_EQ("data/US", GetKeyForUrl("test:///data/US"));
- EXPECT_EQ("data/CA--fr", GetKeyForUrl("test:///data/CA--fr"));
-}
-
-TEST_F(RetrieverTest, NullCallbackNoCrash) {
- ASSERT_NO_FATAL_FAILURE(
- retriever_->Retrieve(kKey, scoped_ptr<Retriever::Callback>()));
- ASSERT_NO_FATAL_FAILURE(
- retriever_->Retrieve(kKey, scoped_ptr<Retriever::Callback>()));
-}
-
-} // namespace addressinput
-} // namespace i18n

Powered by Google App Engine
This is Rietveld 408576698