1aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// Copyright (C) 2014 Google Inc. 2aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// 3aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// Licensed under the Apache License, Version 2.0 (the "License"); 4aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// you may not use this file except in compliance with the License. 5aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// You may obtain a copy of the License at 6aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// 7aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// http://www.apache.org/licenses/LICENSE-2.0 8aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// 9aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// Unless required by applicable law or agreed to in writing, software 10aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// distributed under the License is distributed on an "AS IS" BASIS, 11aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// See the License for the specific language governing permissions and 13aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com// limitations under the License. 14aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1517471f7b69a94f92480650b06721e698204be3c0roubert@google.com#include "ondemand_supply_task.h" 16aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 17aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <libaddressinput/callback.h> 18aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <libaddressinput/null_storage.h> 199693f6426f3500db74dcfc766a130a747a571e5eroubert@google.com#include <libaddressinput/supplier.h> 20aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <libaddressinput/util/basictypes.h> 21aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <libaddressinput/util/scoped_ptr.h> 22aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 23aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <cstddef> 248f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com#include <cstring> 25aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <map> 26aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <string> 27aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <utility> 28aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 29aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include <gtest/gtest.h> 30aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 31aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include "lookup_key.h" 328466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com#include "mock_source.h" 33aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include "retriever.h" 34aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com#include "rule.h" 35aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 36aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comnamespace { 37aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 38aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comusing i18n::addressinput::BuildCallback; 39aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comusing i18n::addressinput::LookupKey; 408466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.comusing i18n::addressinput::MockSource; 41aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comusing i18n::addressinput::NullStorage; 4217471f7b69a94f92480650b06721e698204be3c0roubert@google.comusing i18n::addressinput::OndemandSupplyTask; 43aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comusing i18n::addressinput::Retriever; 44aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comusing i18n::addressinput::Rule; 45aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.comusing i18n::addressinput::scoped_ptr; 469693f6426f3500db74dcfc766a130a747a571e5eroubert@google.comusing i18n::addressinput::Supplier; 47aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 4817471f7b69a94f92480650b06721e698204be3c0roubert@google.comclass OndemandSupplyTaskTest : public testing::Test { 49aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com protected: 5017471f7b69a94f92480650b06721e698204be3c0roubert@google.com OndemandSupplyTaskTest() 51a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com : success_(true), 52a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com lookup_key_(), 53a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com rule_(), 54a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com called_(false), 558466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_(new MockSource), 56aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com rule_cache_(), 578466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com retriever_(new Retriever(source_, new NullStorage)), 5817471f7b69a94f92480650b06721e698204be3c0roubert@google.com supplied_(BuildCallback(this, &OndemandSupplyTaskTest::Supplied)), 5917471f7b69a94f92480650b06721e698204be3c0roubert@google.com task_(new OndemandSupplyTask(lookup_key_, &rule_cache_, *supplied_)) {} 60aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 6117471f7b69a94f92480650b06721e698204be3c0roubert@google.com virtual ~OndemandSupplyTaskTest() { 62aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com for (std::map<std::string, const Rule*>::const_iterator 63aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com it = rule_cache_.begin(); it != rule_cache_.end(); ++it) { 64aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com delete it->second; 65aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com } 66aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com } 67aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 68000aa6dbb70273ccefa77a5d4cd1a400939a2666roubert@google.com void Queue(const std::string& key) { task_->Queue(key); } 698f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com 70000aa6dbb70273ccefa77a5d4cd1a400939a2666roubert@google.com void Retrieve() { task_->Retrieve(*retriever_); } 71aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 728466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com bool success_; // Expected status from MockSource. 73aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com LookupKey lookup_key_; // Stub. 748f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com const Rule* rule_[arraysize(LookupKey::kHierarchy)]; 75aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com bool called_; 768466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com MockSource* const source_; 77aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 78aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com private: 799693f6426f3500db74dcfc766a130a747a571e5eroubert@google.com void Supplied(bool success, 809693f6426f3500db74dcfc766a130a747a571e5eroubert@google.com const LookupKey& lookup_key, 819693f6426f3500db74dcfc766a130a747a571e5eroubert@google.com const Supplier::RuleHierarchy& hierarchy) { 82aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_EQ(success_, success); 83aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_EQ(&lookup_key_, &lookup_key); 8417471f7b69a94f92480650b06721e698204be3c0roubert@google.com ASSERT_EQ(&task_->hierarchy_, &hierarchy); 8517471f7b69a94f92480650b06721e698204be3c0roubert@google.com std::memcpy(rule_, hierarchy.rule, sizeof rule_); 86aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com called_ = true; 87aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com } 88aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 89a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com std::map<std::string, const Rule*> rule_cache_; 90a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com const scoped_ptr<Retriever> retriever_; 91a135825cf2f13931bb067f0f11b6c66dd203e961roubert@google.com const scoped_ptr<const Supplier::Callback> supplied_; 9217471f7b69a94f92480650b06721e698204be3c0roubert@google.com OndemandSupplyTask* const task_; 938f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com 9417471f7b69a94f92480650b06721e698204be3c0roubert@google.com DISALLOW_COPY_AND_ASSIGN(OndemandSupplyTaskTest); 95aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com}; 96aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 9717471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, Empty) { 98aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 99aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 1008f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[0] == NULL); 1018f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[1] == NULL); 1028f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[2] == NULL); 1038f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[3] == NULL); 104aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 105aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 10617471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, Invalid) { 1078f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 108aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 109aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com success_ = false; 110aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 111aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 112aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 113aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 114aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 11517471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, Valid) { 1168466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert(std::make_pair("data/XA", "{\"id\":\"data/XA\"}")); 117aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1188f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 119aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 120aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 121aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 1228f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[0] != NULL); 1238f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[1] == NULL); 1248f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[2] == NULL); 1258f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[3] == NULL); 126aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1278f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_EQ("data/XA", rule_[0]->GetId()); 128aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 129aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com // All rules on the COUNTRY level inherit from the default rule. 1308f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_FALSE(rule_[0]->GetFormat().empty()); 1318f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_FALSE(rule_[0]->GetRequired().empty()); 1328f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[0]->GetPostalCodeMatcher() == NULL); 133aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 134aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 13517471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, ValidHierarchy) { 1368466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert( 137aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com std::make_pair("data/XA", "{\"id\":\"data/XA\"}")); 1388466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert( 139aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com std::make_pair("data/XA/aa", "{\"id\":\"data/XA/aa\"}")); 1408466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert( 141aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com std::make_pair("data/XA/aa/bb", "{\"id\":\"data/XA/aa/bb\"}")); 1428466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert( 143aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com std::make_pair("data/XA/aa/bb/cc", "{\"id\":\"data/XA/aa/bb/cc\"}")); 144aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1458f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 1468f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA/aa"); 1478f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA/aa/bb"); 1488f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA/aa/bb/cc"); 149aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 150aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 151aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 1528f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[0] != NULL); 1538f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[1] != NULL); 1548f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[2] != NULL); 1558f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[3] != NULL); 156aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1578f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_EQ("data/XA", rule_[0]->GetId()); 1588f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_EQ("data/XA/aa", rule_[1]->GetId()); 1598f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_EQ("data/XA/aa/bb", rule_[2]->GetId()); 1608f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_EQ("data/XA/aa/bb/cc", rule_[3]->GetId()); 161aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 162aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com // All rules on the COUNTRY level inherit from the default rule. 1638f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_FALSE(rule_[0]->GetFormat().empty()); 1648f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_FALSE(rule_[0]->GetRequired().empty()); 165aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 166aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com // Only rules on the COUNTRY level inherit from the default rule. 1678f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[1]->GetFormat().empty()); 1688f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[1]->GetRequired().empty()); 1698f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[2]->GetFormat().empty()); 1708f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[2]->GetRequired().empty()); 1718f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[3]->GetFormat().empty()); 1728f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[3]->GetRequired().empty()); 173aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 174aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 17517471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, InvalidJson1) { 1768466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert(std::make_pair("data/XA", ":")); 177aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 178aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com success_ = false; 179aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1808f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 181aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 182aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 183aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 184aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 185aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 18617471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, InvalidJson2) { 1878466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert(std::make_pair("data/XA", "{\"id\":\"data/XA\"}")); 1888466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert(std::make_pair("data/XA/aa", ":")); 189aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 190aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com success_ = false; 191aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 1928f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 1938f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA/aa"); 194aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 195aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 196aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 197aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 198aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 19917471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, EmptyJsonJustMeansServerKnowsNothingAboutKey) { 2008466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert(std::make_pair("data/XA", "{\"id\":\"data/XA\"}")); 2018466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert(std::make_pair("data/XA/aa", "{}")); 202aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 2038f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 2048f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA/aa"); 205aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 206aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 207aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 2088f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[0] != NULL); 2098f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[1] == NULL); 2108f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[2] == NULL); 2118f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_TRUE(rule_[3] == NULL); 212aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 2138f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com EXPECT_EQ("data/XA", rule_[0]->GetId()); 214aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 215aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 21617471f7b69a94f92480650b06721e698204be3c0roubert@google.comTEST_F(OndemandSupplyTaskTest, IfCountryFailsAllFails) { 2178466869ca5e66ec41d133c8ca2f25789028ef4dfroubert@google.com source_->data_.insert( 218aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com std::make_pair("data/XA/aa", "{\"id\":\"data/XA/aa\"}")); 219aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 220aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com success_ = false; 221aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 2228f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA"); 2238f683c2f40fc78ae8efbdcd1e3b10448640d46a2roubert@google.com Queue("data/XA/aa"); 224aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 225aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_NO_FATAL_FAILURE(Retrieve()); 226aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com ASSERT_TRUE(called_); 227aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} 228aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com 229aa04d02df8665c81b05c057ddfd22d6ef8606405roubert@google.com} // namespace 230