diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/boost/libs/regex/test/object_cache | |
parent | Initial commit. (diff) | |
download | ceph-upstream/18.2.2.tar.xz ceph-upstream/18.2.2.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/regex/test/object_cache')
-rw-r--r-- | src/boost/libs/regex/test/object_cache/object_cache_test.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/boost/libs/regex/test/object_cache/object_cache_test.cpp b/src/boost/libs/regex/test/object_cache/object_cache_test.cpp new file mode 100644 index 000000000..6575ac99f --- /dev/null +++ b/src/boost/libs/regex/test/object_cache/object_cache_test.cpp @@ -0,0 +1,84 @@ +/* + * + * Copyright (c) 2004 + * John Maddock + * + * Use, modification and distribution are subject to the + * Boost Software License, Version 1.0. (See accompanying file + * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + * + */ + + /* + * LOCATION: see http://www.boost.org for most recent version. + * FILE object_cache_test.cpp + * VERSION see <boost/version.hpp> + * DESCRIPTION: Test code for a generic object cache. + */ +#include <boost/regex/config.hpp> +#ifdef BOOST_REGEX_CXX03 +#include <boost/regex/v4/object_cache.hpp> +#define SP_NS boost +#else +#include <boost/regex/v5/object_cache.hpp> +#define SP_NS std +#endif +#include <boost/detail/lightweight_main.hpp> +#include "../test_macros.hpp" + +class test_object +{ +public: + test_object(int i) + : m_value(i) + { + ++s_count; + } + int value()const + { + return m_value; + } + static int count() + { + return s_count; + } +private: + int m_value; + static int s_count; +}; + +int test_object::s_count = 0; + +static const int max_cache_size = 5; + +int cpp_main(int /*argc*/, char * /*argv*/[]) +{ + int i; + for(i = 0; i < 20; ++i) + { + SP_NS::shared_ptr<const test_object> p = boost::object_cache<int, test_object>::get(i, max_cache_size); + BOOST_CHECK(p->value() == i); + p = boost::object_cache<int, test_object>::get(i, max_cache_size); + BOOST_CHECK(p->value() == i); + if(i) + { + p = boost::object_cache<int, test_object>::get(i-1, max_cache_size); + BOOST_CHECK(p->value() == i-1); + } + } + int current_count = test_object::count(); + for(int j = 0; j < 10; ++j) + { + for(i = 20 - max_cache_size; i < 20; ++i) + { + SP_NS::shared_ptr<const test_object> p = boost::object_cache<int, test_object>::get(i, max_cache_size); + BOOST_CHECK(p->value() == i); + p = boost::object_cache<int, test_object>::get(i, max_cache_size); + BOOST_CHECK(p->value() == i); + } + } + BOOST_CHECK(current_count == test_object::count()); + return 0; +} + + |