Browse Source

Adding dummy RE2Cache interface.

pull/567/head
Fredrik Roubert 15 years ago
committed by Mihaela Rosca
parent
commit
0b344eff88
4 changed files with 160 additions and 0 deletions
  1. +2
    -0
      cpp/CMakeLists.txt
  2. +38
    -0
      cpp/src/re2_cache.cc
  3. +60
    -0
      cpp/src/re2_cache.h
  4. +60
    -0
      cpp/src/re2_cache_test.cc

+ 2
- 0
cpp/CMakeLists.txt View File

@ -98,6 +98,7 @@ set (
"src/base/synchronization/lock.cc" "src/base/synchronization/lock.cc"
"src/base/threading/thread_restrictions.cc" "src/base/threading/thread_restrictions.cc"
"src/phonenumberutil.cc" "src/phonenumberutil.cc"
"src/re2_cache.cc"
"src/stringutil.cc" "src/stringutil.cc"
"src/utf/rune.c" "src/utf/rune.c"
) )
@ -150,6 +151,7 @@ target_link_libraries (phonenumber re2)
set (TEST_SOURCES set (TEST_SOURCES
"src/phonenumberutil_test.cc" "src/phonenumberutil_test.cc"
"src/re2_cache_test.cc"
"src/run_tests.cc" "src/run_tests.cc"
"src/stringutil_test.cc" "src/stringutil_test.cc"
) )


+ 38
- 0
cpp/src/re2_cache.cc View File

@ -0,0 +1,38 @@
// Copyright (C) 2011 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.
// Author: Fredrik Roubert <roubert@google.com>
#include "re2_cache.h"
#include <cstddef>
#include <string>
#include <re2/re2.h>
namespace i18n {
namespace phonenumbers {
using std::string;
RE2Cache::RE2Cache(size_t /*max_items*/) {}
RE2Cache::~RE2Cache() {}
RE2Cache::ScopedAccess::ScopedAccess(RE2Cache* /*cache*/, const string& pattern)
: pattern_(pattern), regexp_(new RE2(pattern_)) {}
RE2Cache::ScopedAccess::~ScopedAccess() {}
} // namespace phonenumbers
} // namespace i18n

+ 60
- 0
cpp/src/re2_cache.h View File

@ -0,0 +1,60 @@
// Copyright (C) 2011 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.
// Author: Fredrik Roubert <roubert@google.com>
// The RE2Cache provides an interface to store RE2 objects in some kind of
// cache. Currently, it doesn't do any caching at all but just provides the
// interface. TODO: Implement caching. ;-)
#ifndef I18N_PHONENUMBERS_RE2_CACHE_H_
#define I18N_PHONENUMBERS_RE2_CACHE_H_
#include <cstddef>
#include <string>
#include "base/scoped_ptr.h"
namespace re2 {
class RE2;
} // namespace re2
namespace i18n {
namespace phonenumbers {
using re2::RE2;
using std::string;
class RE2Cache {
public:
explicit RE2Cache(size_t max_items);
~RE2Cache();
class ScopedAccess {
public:
ScopedAccess(RE2Cache* cache, const string& pattern);
~ScopedAccess();
operator const RE2&() const { return *regexp_; }
private:
const string pattern_;
scoped_ptr<const RE2> regexp_;
friend class RE2CacheTest_AccessConstructor_Test;
};
};
} // namespace phonenumbers
} // namespace i18n
#endif // I18N_PHONENUMBERS_RE2_CACHE_H_

+ 60
- 0
cpp/src/re2_cache_test.cc View File

@ -0,0 +1,60 @@
// Copyright (C) 2011 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.
// Author: Fredrik Roubert <roubert@google.com>
// Test the wrapper of the cache. The cache functionality itself will be tested
// by the unit test for the cache implementation.
#include <cstddef>
#include <string>
#include <gtest/gtest.h>
#include <re2/re2.h>
#include "re2_cache.h"
namespace i18n {
namespace phonenumbers {
using std::string;
class RE2CacheTest : public testing::Test {
protected:
static const size_t max_items_ = 2;
RE2CacheTest() : cache_(max_items_) {}
virtual ~RE2CacheTest() {}
RE2Cache cache_;
};
TEST_F(RE2CacheTest, AccessConstructor) {
static const string foo("foo");
RE2Cache::ScopedAccess access(&cache_, foo);
EXPECT_EQ(foo, access.pattern_);
EXPECT_TRUE(access.regexp_ != NULL);
}
TEST_F(RE2CacheTest, OperatorRE2) {
static const string foo("foo");
RE2Cache::ScopedAccess access(&cache_, foo);
const RE2& regexp = access;
EXPECT_EQ(foo, regexp.pattern());
}
} // namespace phonenumbers
} // namespace i18n

Loading…
Cancel
Save