11767c5feSopenharmony_ci// Copyright (C) 2011 The Libphonenumber Authors 21767c5feSopenharmony_ci// 31767c5feSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 41767c5feSopenharmony_ci// you may not use this file except in compliance with the License. 51767c5feSopenharmony_ci// You may obtain a copy of the License at 61767c5feSopenharmony_ci// 71767c5feSopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 81767c5feSopenharmony_ci// 91767c5feSopenharmony_ci// Unless required by applicable law or agreed to in writing, software 101767c5feSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 111767c5feSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121767c5feSopenharmony_ci// See the License for the specific language governing permissions and 131767c5feSopenharmony_ci// limitations under the License. 141767c5feSopenharmony_ci 151767c5feSopenharmony_ci// Author: Fredrik Roubert 161767c5feSopenharmony_ci 171767c5feSopenharmony_ci#include <cstddef> 181767c5feSopenharmony_ci#include <string> 191767c5feSopenharmony_ci 201767c5feSopenharmony_ci#include <gtest/gtest.h> 211767c5feSopenharmony_ci 221767c5feSopenharmony_ci#include "phonenumbers/base/synchronization/lock.h" 231767c5feSopenharmony_ci#include "phonenumbers/regexp_cache.h" 241767c5feSopenharmony_ci#include "phonenumbers/regexp_factory.h" 251767c5feSopenharmony_ci 261767c5feSopenharmony_cinamespace i18n { 271767c5feSopenharmony_cinamespace phonenumbers { 281767c5feSopenharmony_ci 291767c5feSopenharmony_ciusing std::string; 301767c5feSopenharmony_ci 311767c5feSopenharmony_ciclass RegExpCacheTest : public testing::Test { 321767c5feSopenharmony_ci protected: 331767c5feSopenharmony_ci static constexpr size_t min_items_ = 2; 341767c5feSopenharmony_ci 351767c5feSopenharmony_ci RegExpCacheTest() : cache_(regexp_factory_, min_items_) {} 361767c5feSopenharmony_ci virtual ~RegExpCacheTest() {} 371767c5feSopenharmony_ci 381767c5feSopenharmony_ci RegExpFactory regexp_factory_; 391767c5feSopenharmony_ci RegExpCache cache_; 401767c5feSopenharmony_ci}; 411767c5feSopenharmony_ci 421767c5feSopenharmony_ciTEST_F(RegExpCacheTest, CacheConstructor) { 431767c5feSopenharmony_ci AutoLock l(cache_.lock_); 441767c5feSopenharmony_ci ASSERT_TRUE(cache_.cache_impl_ != NULL); 451767c5feSopenharmony_ci EXPECT_TRUE(cache_.cache_impl_->empty()); 461767c5feSopenharmony_ci} 471767c5feSopenharmony_ci 481767c5feSopenharmony_ciTEST_F(RegExpCacheTest, GetRegExp) { 491767c5feSopenharmony_ci static const string pattern1("foo"); 501767c5feSopenharmony_ci static const string pattern2("foo"); 511767c5feSopenharmony_ci 521767c5feSopenharmony_ci const RegExp& regexp1 = cache_.GetRegExp(pattern1); 531767c5feSopenharmony_ci // "foo" has been cached therefore we must get the same object. 541767c5feSopenharmony_ci const RegExp& regexp2 = cache_.GetRegExp(pattern2); 551767c5feSopenharmony_ci 561767c5feSopenharmony_ci EXPECT_TRUE(®exp1 == ®exp2); 571767c5feSopenharmony_ci} 581767c5feSopenharmony_ci 591767c5feSopenharmony_ci} // namespace phonenumbers 601767c5feSopenharmony_ci} // namespace i18n 61