You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2018/12/20 01:33:47 UTC
svn commit: r1849354 - in /subversion/trunk: ./ build/ac-macros/
subversion/bindings/cxx/src/aprwrap/ subversion/bindings/cxx/tests/
Author: brane
Date: Thu Dec 20 01:33:47 2018
New Revision: 1849354
URL: http://svn.apache.org/viewvc?rev=1849354&view=rev
Log:
Switch all SVN++ tests to Boost.Test.
* build/ac-macros/ax_boost_unit_test_framework.m4: New; imported from the Autoconf Archive.
* LICENSE: Add entry for ax_boost_unit_test_framework.m4.
* aclocal.m4: Include ax_boost_unit_test_framework.m4.
* Makefile.in
(BOOST_TEST_CPPFLAGS): Rename from BOOST_CPPFLAGS, redefine.
(BOOST_TEST_LDFLAGS): Rename from BOOST_LDFLAGS, redefine.
(COMPILE_SVNXX): Rename from COMPILE_SVNXX_CXX, redefine.
(COMPILE_SVNXX_TEST): Rename from COMPILE_SVNXX_CXX_BOOST, redefine.
(LINK_SVNXX_TEST): Rename from LINK_CXX_BOOST, redefine.
* build.conf
(libsvnxx, svnxx-tests): Update compile and link commands.
* configure.ac: Update SVN++ bits.
* subversion/bindings/cxx/src/aprwrap/array.hpp:
Add comments to mark obsolete constructs that should change to C++11 idiom.
* subversion/bindings/cxx/src/aprwrap/hash.hpp: Likewise.
* subversion/bindings/cxx/tests/cxxhl-tests.cpp.
* subversion/bindings/cxx/tests/test_aprwrap.cpp: Removed.
* subversion/bindings/cxx/tests/svnxx-tests.cpp,
* subversion/bindings/cxx/tests/fixture_initialize_apr.hpp,
* subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp: New.
* subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp,
* subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp,
* subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp,
* subversion/bindings/cxx/tests/test_aprwrap_pools.cpp: New; extracted from the
removed test_aprwrap.cpp and reworked for Boost.Test.
* subversion/bindings/cxx/tests/test_exceptions.cpp: Renamed from test_exception.cpp
and reworked for Boost.Test.
Added:
subversion/trunk/build/ac-macros/ax_boost_unit_test_framework.m4
subversion/trunk/subversion/bindings/cxx/tests/svnxx-tests.cpp (with props)
subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp (with props)
subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp
- copied, changed from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp
subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp
- copied, changed from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp
subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp
- copied, changed from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp
subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_pools.cpp
- copied, changed from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp
subversion/trunk/subversion/bindings/cxx/tests/test_exceptions.cpp
- copied, changed from r1849353, subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp
Removed:
subversion/trunk/subversion/bindings/cxx/tests/cxxhl-tests.cpp
subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp
subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp
Modified:
subversion/trunk/LICENSE
subversion/trunk/Makefile.in
subversion/trunk/aclocal.m4
subversion/trunk/build.conf
subversion/trunk/configure.ac
subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp
subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp
subversion/trunk/subversion/bindings/cxx/tests/fixture_initialize_apr.hpp
Modified: subversion/trunk/LICENSE
URL: http://svn.apache.org/viewvc/subversion/trunk/LICENSE?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/LICENSE (original)
+++ subversion/trunk/LICENSE Thu Dec 20 01:33:47 2018
@@ -424,12 +424,23 @@ For the (modified) LZ4 library files in
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-For the Boost autoconf macros in build/ac-macros/ax_boost_base.m4:
+For the Autoconf Archive macros for Boost:
- Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
- Copyright (c) 2009 Peter Adolphs
+ * in build/ac-macros/ax_boost_base.m4:
- Copying and distribution of this file, with or without modification, are
- permitted in any medium without royalty provided the copyright notice
- and this notice are preserved. This file is offered as-is, without any
- warranty.
+ Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+ Copyright (c) 2009 Peter Adolphs
+
+ Copying and distribution of this file, with or without modification, are
+ permitted in any medium without royalty provided the copyright notice
+ and this notice are preserved. This file is offered as-is, without any
+ warranty.
+
+ * in build/ac-macros/ax_boost_unit_test_framework.m4:
+
+ Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+
+ Copying and distribution of this file, with or without modification, are
+ permitted in any medium without royalty provided the copyright notice
+ and this notice are preserved. This file is offered as-is, without any
+ warranty.
Modified: subversion/trunk/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/trunk/Makefile.in?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/Makefile.in (original)
+++ subversion/trunk/Makefile.in Thu Dec 20 01:33:47 2018
@@ -141,8 +141,8 @@ APACHE_INCLUDES = @APACHE_INCLUDES@
APACHE_LIBEXECDIR = $(DESTDIR)@APACHE_LIBEXECDIR@
APACHE_LDFLAGS = @APACHE_LDFLAGS@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
+BOOST_TEST_CPPFLAGS = @BOOST_CPPFLAGS@ -DBOOST_TEST_DYN_LINK -DBOOST_TEST_NO_MAIN
+BOOST_TEST_LDFLAGS = @BOOST_LDFLAGS@ @BOOST_UNIT_TEST_FRAMEWORK_LIB@
SWIG = @SWIG@
SWIG_PY_INCLUDES = @SWIG_PY_INCLUDES@ -I$(SWIG_SRC_DIR)/python/libsvn_swig_py
@@ -261,14 +261,14 @@ TEST_SHLIB_VAR_SWIG_RB=\
fi;
# special compilation for files destined for SVN++
-COMPILE_SVNXX_CXX = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) -o $@ -c
-COMPILE_SVNXX_CXX_BOOST = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) $(BOOST_CPPFLAGS) -o $@ -c
+COMPILE_SVNXX = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) -o $@ -c
+COMPILE_SVNXX_TEST = $(LT_COMPILE_CXX) $(SVNXX_INCLUDES) $(BOOST_TEST_CPPFLAGS) -o $@ -c
LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(libdir)
LINK_LIB = $(LINK) $(LT_SO_VERSION)
LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
-LINK_CXX_BOOST = $(LINK_CXX) $(BOOST_LDFLAGS)
+LINK_SVNXX_TEST = $(LINK_CXX) $(BOOST_TEST_LDFLAGS)
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared
Modified: subversion/trunk/aclocal.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/aclocal.m4?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/aclocal.m4 (original)
+++ subversion/trunk/aclocal.m4 Thu Dec 20 01:33:47 2018
@@ -36,6 +36,7 @@ sinclude(build/ac-macros/apr.m4)
sinclude(build/ac-macros/aprutil.m4)
sinclude(build/ac-macros/apr_memcache.m4)
sinclude(build/ac-macros/ax_boost_base.m4)
+sinclude(build/ac-macros/ax_boost_unit_test_framework.m4)
sinclude(build/ac-macros/berkeley-db.m4)
sinclude(build/ac-macros/compiler.m4)
sinclude(build/ac-macros/ctypesgen.m4)
Modified: subversion/trunk/build.conf
URL: http://svn.apache.org/viewvc/subversion/trunk/build.conf?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/build.conf (original)
+++ subversion/trunk/build.conf Thu Dec 20 01:33:47 2018
@@ -737,7 +737,7 @@ libs = libsvn_repos libsvn_client libsvn
sources = src/*.cpp src/aprwrap/*.cpp
install = svnxx-lib
msvc-static = yes
-compile-cmd = $(COMPILE_SVNXX_CXX)
+compile-cmd = $(COMPILE_SVNXX)
link-cmd = $(LINK_CXX_LIB)
[svnxx-tests]
@@ -748,8 +748,8 @@ path = subversion/bindings/cxx
libs = libsvnxx apr
sources = tests/*.cpp
install = svnxx-tests
-compile-cmd = $(COMPILE_SVNXX_CXX_BOOST)
-link-cmd = $(LINK_CXX_BOOST)
+compile-cmd = $(COMPILE_SVNXX_TEST)
+link-cmd = $(LINK_SVNXX_TEST)
# ----------------------------------------------------------------------------
#
Added: subversion/trunk/build/ac-macros/ax_boost_unit_test_framework.m4
URL: http://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/ax_boost_unit_test_framework.m4?rev=1849354&view=auto
==============================================================================
--- subversion/trunk/build/ac-macros/ax_boost_unit_test_framework.m4 (added)
+++ subversion/trunk/build/ac-macros/ax_boost_unit_test_framework.m4 Thu Dec 20 01:33:47 2018
@@ -0,0 +1,137 @@
+# =================================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_unit_test_framework.html
+# =================================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_UNIT_TEST_FRAMEWORK
+#
+# DESCRIPTION
+#
+# Test for Unit_Test_Framework library from the Boost C++ libraries. The
+# macro requires a preceding call to AX_BOOST_BASE. Further documentation
+# is available at <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_UNIT_TEST_FRAMEWORK
+#
+# LICENSE
+#
+# Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 21
+
+AC_DEFUN([AX_BOOST_UNIT_TEST_FRAMEWORK],
+[
+ AC_ARG_WITH([boost-unit-test-framework],
+ AS_HELP_STRING([--with-boost-unit-test-framework@<:@=special-lib@:>@],
+ [use the Unit_Test_Framework library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-unit-test-framework=boost_unit_test_framework-gcc ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_unit_test_framework_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_unit_test_framework_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::Unit_Test_Framework library is available,
+ ax_cv_boost_unit_test_framework,
+ [AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>]],
+ [[using boost::unit_test::test_suite;
+ test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); if (test == NULL) { return 1; } else { return 0; }]])],
+ ax_cv_boost_unit_test_framework=yes, ax_cv_boost_unit_test_framework=no)
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_unit_test_framework" = "xyes"; then
+ AC_DEFINE(HAVE_BOOST_UNIT_TEST_FRAMEWORK,,[define if the Boost::Unit_Test_Framework library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+ if test "x$ax_boost_user_unit_test_framework_lib" = "x"; then
+ saved_ldflags="${LDFLAGS}"
+ for monitor_library in `ls $BOOSTLIBDIR/libboost_unit_test_framework*.so* $BOOSTLIBDIR/libboost_unit_test_framework*.dylib* $BOOSTLIBDIR/libboost_unit_test_framework*.a* 2>/dev/null` ; do
+ if test -r $monitor_library ; then
+ libextension=`echo $monitor_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a.*$;\1;'`
+ ax_lib=${libextension}
+ link_unit_test_framework="yes"
+ else
+ link_unit_test_framework="no"
+ fi
+
+ if test "x$link_unit_test_framework" = "xyes"; then
+ BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
+ AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+ break
+ fi
+ done
+ if test "x$link_unit_test_framework" != "xyes"; then
+ for libextension in `ls $BOOSTLIBDIR/boost_unit_test_framework*.dll* $BOOSTLIBDIR/boost_unit_test_framework*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_unit_test_framework.*\)\.dll.*$;\1;' -e 's;^\(boost_unit_test_framework.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"; AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB) link_unit_test_framework="yes"; break],
+ [link_unit_test_framework="no"])
+ done
+ fi
+ else
+ link_unit_test_framework="no"
+ saved_ldflags="${LDFLAGS}"
+ for ax_lib in boost_unit_test_framework-$ax_boost_user_unit_test_framework_lib $ax_boost_user_unit_test_framework_lib ; do
+ if test "x$link_unit_test_framework" = "xyes"; then
+ break;
+ fi
+ for unittest_library in `ls $BOOSTLIBDIR/lib${ax_lib}.so* $BOOSTLIBDIR/lib${ax_lib}.a* 2>/dev/null` ; do
+ if test -r $unittest_library ; then
+ libextension=`echo $unittest_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a*$;\1;'`
+ ax_lib=${libextension}
+ link_unit_test_framework="yes"
+ else
+ link_unit_test_framework="no"
+ fi
+
+ if test "x$link_unit_test_framework" = "xyes"; then
+ BOOST_UNIT_TEST_FRAMEWORK_LIB="-l$ax_lib"
+ AC_SUBST(BOOST_UNIT_TEST_FRAMEWORK_LIB)
+ break
+ fi
+ done
+ done
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the library!)
+ fi
+ if test "x$link_unit_test_framework" != "xyes"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
Modified: subversion/trunk/configure.ac
URL: http://svn.apache.org/viewvc/subversion/trunk/configure.ac?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/configure.ac (original)
+++ subversion/trunk/configure.ac Thu Dec 20 01:33:47 2018
@@ -1439,7 +1439,12 @@ AC_SUBST(SVN_FS_LIB_LINK)
# ==== SVN++ =================================================================
-AX_BOOST_BASE([1.58],[SVN_HAVE_CXX_BOOST=true],[SVN_HAVE_CXX_BOOST=false])
+AX_BOOST_BASE([1.58],
+ [
+ SVN_HAVE_CXX_BOOST=true
+ AX_BOOST_UNIT_TEST_FRAMEWORK
+ ],
+ [SVN_HAVE_CXX_BOOST=false])
AC_SUBST(SVN_HAVE_CXX_BOOST)
# ==== JavaHL ================================================================
Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp (original)
+++ subversion/trunk/subversion/bindings/cxx/src/aprwrap/array.hpp Thu Dec 20 01:33:47 2018
@@ -142,6 +142,8 @@ public:
/**
* Abstract base class for mutable iteration callback functors.
+ *
+ * FIXME: obsolete; see below.
*/
struct Iteration
{
@@ -155,6 +157,8 @@ public:
/**
* Iterate over all the values pairs in the array, invoking
* @a callback for each one.
+ *
+ * FIXME: should use std::function instead.
*/
void iterate(Iteration& callback)
{
@@ -165,6 +169,8 @@ public:
/**
* Abstract base class for immutable iteration callback functors.
+ *
+ * FIXME: obsolete; see below.
*/
struct ConstIteration
{
@@ -178,6 +184,8 @@ public:
/**
* Iterate over all the values pairs in the array, invoking
* @a callback for each one.
+ *
+ * FIXME: should use std::function instead.
*/
void iterate(ConstIteration& callback) const
{
@@ -259,12 +267,16 @@ public:
/**
* Abstract base class for immutable iteration callback functors.
+ *
+ * FIXME: obsolete; see below.
*/
typedef typename inherited::ConstIteration Iteration;
/**
* Iterate over all the values pairs in the array, invoking
* @a callback for each one.
+ *
+ * FIXME: should use std::function instead.
*/
void iterate(Iteration& callback) const
{
Modified: subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp (original)
+++ subversion/trunk/subversion/bindings/cxx/src/aprwrap/hash.hpp Thu Dec 20 01:33:47 2018
@@ -50,6 +50,8 @@ public:
* Iterate over all the key-value pairs in the hash table, invoking
* @a callback for each pair.
* Uses @a scratch_pool for temporary allocations.
+ *
+ * FIXME: should use std::function instead.
*/
void iterate(Iteration& callback, const Pool& scratch_pool);
Modified: subversion/trunk/subversion/bindings/cxx/tests/fixture_initialize_apr.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/fixture_initialize_apr.hpp?rev=1849354&r1=1849353&r2=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/fixture_initialize_apr.hpp (original)
+++ subversion/trunk/subversion/bindings/cxx/tests/fixture_initialize_apr.hpp Thu Dec 20 01:33:47 2018
@@ -19,6 +19,10 @@
* ====================================================================
*/
+#ifndef __cplusplus
+#error "This is a C++ header file."
+#endif
+
#ifndef SVNXX_TEST_FIXTURE_INITIALIZE_APR_HPP
#define SVNXX_TEST_FIXTURE_INITIALIZE_APR_HPP
Added: subversion/trunk/subversion/bindings/cxx/tests/svnxx-tests.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/svnxx-tests.cpp?rev=1849354&view=auto
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/svnxx-tests.cpp (added)
+++ subversion/trunk/subversion/bindings/cxx/tests/svnxx-tests.cpp Thu Dec 20 01:33:47 2018
@@ -0,0 +1,30 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * ====================================================================
+ */
+
+#define BOOST_TEST_MODULE svnxx
+#include <boost/test/unit_test.hpp>
+
+#include "fixture_initialize_apr.hpp"
+
+int main (int argc, char* argv[])
+{
+ return boost::unit_test::unit_test_main(&init_unit_test, argc, argv);
+}
Propchange: subversion/trunk/subversion/bindings/cxx/tests/svnxx-tests.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp?rev=1849354&view=auto
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp (added)
+++ subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp Thu Dec 20 01:33:47 2018
@@ -0,0 +1,47 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ * ====================================================================
+ */
+
+#ifndef __cplusplus
+#error "This is a C++ header file."
+#endif
+
+#ifndef SVNXX_TEST_APRWRAP_ARRAY_HELPERS_HPP
+#define SVNXX_TEST_APRWRAP_ARRAY_HELPERS_HPP
+
+namespace {
+// Create a randomly-ordered array of constant strings.
+apr_array_header_t* fill_array(APR::Pool& pool)
+{
+ apr_array_header_t* a = apr_array_make(pool.get(), 0, sizeof(const char*));
+ APR_ARRAY_PUSH(a, const char*) = "primus";
+ APR_ARRAY_PUSH(a, const char*) = "secundus";
+ APR_ARRAY_PUSH(a, const char*) = "tertius";
+ APR_ARRAY_PUSH(a, const char*) = "quartus";
+ APR_ARRAY_PUSH(a, const char*) = "quintus";
+ APR_ARRAY_PUSH(a, const char*) = "sextus";
+ APR_ARRAY_PUSH(a, const char*) = "septimus";
+ std::random_shuffle(&APR_ARRAY_IDX(a, 0, const char*),
+ &APR_ARRAY_IDX(a, a->nelts, const char*));
+ return a;
+}
+} // anonymous namespace
+
+#endif // SVNXX_TEST_APRWRAP_ARRAY_HELPERS_HPP
Propchange: subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp
------------------------------------------------------------------------------
svn:eol-style = native
Copied: subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp (from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp?p2=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp&p1=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp&r1=1849322&r2=1849354&rev=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp (original)
+++ subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp Thu Dec 20 01:33:47 2018
@@ -19,151 +19,92 @@
* ====================================================================
*/
+#include <boost/test/unit_test.hpp>
+
#include <algorithm>
#include <stdexcept>
#include "../src/aprwrap.hpp"
-#include <gmock/gmock.h>
-
-//
-// Pools
-//
-
-TEST(Pools, InitializeGlobalPool)
-{
- APR::Pool pool;
- EXPECT_THAT(pool.get(), testing::NotNull());
- EXPECT_THAT(apr_pool_parent_get(pool.get()), testing::NotNull());
-}
-
-TEST(Pools, CreateSubpool)
-{
- APR::Pool pool;
- APR::Pool subpool(&pool);
- EXPECT_EQ(pool.get(), apr_pool_parent_get(subpool.get()));
-}
-
-TEST(Pools, TypedAllocate)
-{
- APR::Pool pool;
- const unsigned char* buffer = pool.alloc<unsigned char>(1);
- EXPECT_THAT(buffer, testing::NotNull());
-}
-
-// N.B.: This test may pass randomly even if zero-filled allocation
-// does not work correctly, since we cannot make assumptions about the
-// values of uninitialized memory.
-TEST(Pools, TypedAllocateZerofill)
-{
- APR::Pool pool;
- static const std::size_t size = 32757;
- const unsigned char* buffer = pool.allocz<unsigned char>(size);
- ASSERT_THAT(buffer, testing::NotNull());
- EXPECT_EQ(size, std::count(buffer, buffer + size, 0));
-}
-
-//
-// Array helper functions
-//
-
-namespace {
-// Create a randomly-ordered array of constant strings.
-apr_array_header_t* fill_array(APR::Pool& pool)
-{
- apr_array_header_t* a = apr_array_make(pool.get(), 0, sizeof(const char*));
- APR_ARRAY_PUSH(a, const char*) = "primus";
- APR_ARRAY_PUSH(a, const char*) = "secundus";
- APR_ARRAY_PUSH(a, const char*) = "tertius";
- APR_ARRAY_PUSH(a, const char*) = "quartus";
- APR_ARRAY_PUSH(a, const char*) = "quintus";
- APR_ARRAY_PUSH(a, const char*) = "sextus";
- APR_ARRAY_PUSH(a, const char*) = "septimus";
- std::random_shuffle(&APR_ARRAY_IDX(a, 0, const char*),
- &APR_ARRAY_IDX(a, a->nelts, const char*));
- return a;
-}
-} // anonymous namespace
+#include "test_aprwrap_array_helpers.hpp"
-//
-// Arrays
-//
+BOOST_AUTO_TEST_SUITE(aprwrap_arrays);
-TEST(Arrays, CreateArray)
+BOOST_AUTO_TEST_CASE(create_array)
{
typedef APR::Array<unsigned char> Array;
APR::Pool pool;
Array array(pool);
- EXPECT_THAT(array.array(), testing::NotNull());
- EXPECT_EQ(0, array.size());
- EXPECT_EQ(sizeof(unsigned char), sizeof(Array::value_type));
- EXPECT_EQ(sizeof(Array::value_type), array.array()->elt_size);
+ BOOST_TEST(array.array() != nullptr);
+ BOOST_TEST(array.size() == 0);
+ BOOST_TEST(sizeof(Array::value_type) == sizeof(unsigned char));
+ BOOST_TEST(array.array()->elt_size == sizeof(Array::value_type));
}
-TEST(Arrays, WrapArray)
+BOOST_AUTO_TEST_CASE(wrap_array)
{
typedef APR::Array<unsigned char> Array;
APR::Pool pool;
apr_array_header_t* apr_array =
apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
+ BOOST_TEST_REQUIRE(apr_array != nullptr);
Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
+ BOOST_TEST(array.array() == apr_array);
+ BOOST_TEST(array.size() == 0);
}
-TEST(Arrays, RewrapTypeMismatch)
+BOOST_AUTO_TEST_CASE(rewrap_type_mismatch)
{
typedef APR::Array<unsigned char> ByteArray;
typedef APR::Array<int> IntArray;
APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
+ BOOST_CHECK_THROW(ByteArray array(IntArray(pool).array()),
+ std::invalid_argument);
}
-TEST(Arrays, OutOfBounds)
+BOOST_AUTO_TEST_CASE(out_of_bounds)
{
typedef APR::Array<unsigned char> Array;
APR::Pool pool;
Array array(pool);
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
+ BOOST_CHECK_THROW(array.at(-1), std::out_of_range);
+ BOOST_CHECK_THROW(array.at(array.size()), std::out_of_range);
}
-TEST(Arrays, Indexing)
+BOOST_AUTO_TEST_CASE(indexing)
{
typedef APR::Array<const char*> Array;
APR::Pool pool;
Array array(fill_array(pool));
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
+ BOOST_TEST(array[0] == APR_ARRAY_IDX(array.array(), 0, Array::value_type));
+ BOOST_TEST(array[array.size() - 1] == APR_ARRAY_IDX(array.array(),
array.array()->nelts - 1,
Array::value_type));
}
-TEST(Arrays, CheckedIndexing)
+BOOST_AUTO_TEST_CASE(checked_indexing)
{
typedef APR::Array<const char*> Array;
APR::Pool pool;
Array array(fill_array(pool));
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
+ BOOST_TEST(array.at(0) == APR_ARRAY_IDX(array.array(), 0, Array::value_type));
+ BOOST_TEST(array.at(array.size() - 1) == APR_ARRAY_IDX(array.array(),
+ array.array()->nelts - 1,
+ Array::value_type));
}
-TEST(Arrays, Iteration)
+BOOST_AUTO_TEST_CASE(iteration)
{
typedef APR::Array<const char*> Array;
@@ -178,7 +119,7 @@ TEST(Arrays, Iteration)
bool operator()(Array::value_type& value)
{
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
+ BOOST_TEST(value == APR_ARRAY_IDX(m_raw_array, m_index,
Array::value_type));
++m_index;
return true;
@@ -190,9 +131,19 @@ TEST(Arrays, Iteration)
} callback(array.array());
array.iterate(callback);
+
+ // TODO: Fix iteration to take std::function.
+ // Array::size_type index = 0;
+ // apr_array_header_t* raw_array = array.array();
+ // array.iterate(
+ // [&index, &raw_array](Array::value_type& value) {
+ // BOOST_TEST(value == APR_ARRAY_IDX(raw_array, index, Array::value_type));
+ // ++index;
+ // return true;
+ // });
}
-TEST(Arrays, ConstIteration)
+BOOST_AUTO_TEST_CASE(const_iteration)
{
typedef APR::Array<const char*> Array;
@@ -207,7 +158,7 @@ TEST(Arrays, ConstIteration)
bool operator()(const Array::value_type& value)
{
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
+ BOOST_TEST(value == APR_ARRAY_IDX(m_raw_array, m_index,
Array::value_type));
++m_index;
return true;
@@ -221,7 +172,7 @@ TEST(Arrays, ConstIteration)
array.iterate(callback);
}
-TEST(Arrays, Push)
+BOOST_AUTO_TEST_CASE(push)
{
typedef APR::Array<const char*> Array;
@@ -236,14 +187,14 @@ TEST(Arrays, Push)
array.push("nonus");
array.push("decimus");
- EXPECT_EQ(point + 3, array.size());
- EXPECT_STREQ(first, array[0]);
- EXPECT_STREQ(last, array[point - 1]);
- EXPECT_STREQ("octavius", array[point]);
- EXPECT_STREQ("decimus", array[array.size() - 1]);
+ BOOST_TEST(array.size() == point + 3);
+ BOOST_TEST(array[0] == first);
+ BOOST_TEST(array[point - 1] == last);
+ BOOST_TEST(array[point] == "octavius");
+ BOOST_TEST(array[array.size() - 1] == "decimus");
}
-TEST(Arrays, Pop)
+BOOST_AUTO_TEST_CASE(pop)
{
typedef APR::Array<const char*> Array;
@@ -252,184 +203,12 @@ TEST(Arrays, Pop)
for (Array::size_type i = 0, z = array.size(); i <= z; ++i)
{
- const char** last = (!array.array()->nelts ? NULL
+ const char** last = (!array.array()->nelts ? nullptr
: &APR_ARRAY_IDX(array.array(),
array.array()->nelts - 1,
- const char*));
- EXPECT_EQ(last, array.pop());
+ Array::value_type));
+ BOOST_TEST(array.pop() == last);
}
}
-//
-// ConstArrays
-//
-
-TEST(ConstArrays, WrapArray)
-{
- typedef APR::ConstArray<unsigned char> Array;
-
- APR::Pool pool;
- const apr_array_header_t* apr_array =
- apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
-
- Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
-}
-
-TEST(ConstArrays, RewrapTypeMismatch)
-{
- typedef APR::ConstArray<unsigned char> ByteArray;
- typedef APR::Array<int> IntArray;
-
- APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
-}
-
-TEST(ConstArrays, OutOfBounds)
-{
- typedef APR::ConstArray<unsigned char> Array;
-
- APR::Pool pool;
- Array array = Array(APR::Array<Array::value_type>(pool));
-
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
-}
-
-TEST(ConstArrays, Indexing)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(ConstArrays, CheckedIndexing)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(ConstArrays, Iteration)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::Iteration
- {
- Iteration(const apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(const Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- const apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-//
-// Hash tables
-//
-
-TEST(Hashes, StringHash)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("b", hash.get("bbb"));
- EXPECT_STREQ("c", hash.get("cccc"));
-}
-
-TEST(Hashes, FixedStringHash)
-{
- // The point of this test is to verify that the key-length parameter
- // of the template actually limits the length of the keys.
- typedef APR::Hash<char, const char, 2> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa&qux", "a");
- hash.set("bb#foo", "b");
- hash.set("cc@bar", "c");
-
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa%foo"));
- EXPECT_STREQ("b", hash.get("bb*bar"));
- EXPECT_STREQ("c", hash.get("cc$qux"));
-}
-
-TEST(Hashes, Delete)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- hash.del("bbb");
-
- EXPECT_EQ(2, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("c", hash.get("cccc"));
-}
-
-TEST(Hashes, Iterate)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- struct C : public H::Iteration
- {
- H& m_hash;
- explicit C(H& hashref) : m_hash(hashref) {}
-
- bool operator()(const H::Key& key, H::value_type value)
- {
- EXPECT_STREQ(value, m_hash.get(key));
- return true;
- }
- } callback(hash);
-
- hash.iterate(callback, pool);
-}
+BOOST_AUTO_TEST_SUITE_END();
Copied: subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp (from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp?p2=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp&p1=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp&r1=1849322&r2=1849354&rev=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp (original)
+++ subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp Thu Dec 20 01:33:47 2018
@@ -19,313 +19,79 @@
* ====================================================================
*/
+#include <boost/test/unit_test.hpp>
+
#include <algorithm>
#include <stdexcept>
#include "../src/aprwrap.hpp"
-#include <gmock/gmock.h>
-
-//
-// Pools
-//
-
-TEST(Pools, InitializeGlobalPool)
-{
- APR::Pool pool;
- EXPECT_THAT(pool.get(), testing::NotNull());
- EXPECT_THAT(apr_pool_parent_get(pool.get()), testing::NotNull());
-}
-
-TEST(Pools, CreateSubpool)
-{
- APR::Pool pool;
- APR::Pool subpool(&pool);
- EXPECT_EQ(pool.get(), apr_pool_parent_get(subpool.get()));
-}
-
-TEST(Pools, TypedAllocate)
-{
- APR::Pool pool;
- const unsigned char* buffer = pool.alloc<unsigned char>(1);
- EXPECT_THAT(buffer, testing::NotNull());
-}
+#include "test_aprwrap_array_helpers.hpp"
-// N.B.: This test may pass randomly even if zero-filled allocation
-// does not work correctly, since we cannot make assumptions about the
-// values of uninitialized memory.
-TEST(Pools, TypedAllocateZerofill)
-{
- APR::Pool pool;
- static const std::size_t size = 32757;
- const unsigned char* buffer = pool.allocz<unsigned char>(size);
- ASSERT_THAT(buffer, testing::NotNull());
- EXPECT_EQ(size, std::count(buffer, buffer + size, 0));
-}
+BOOST_AUTO_TEST_SUITE(aprwrap_const_arrayw);
-//
-// Array helper functions
-//
-
-namespace {
-// Create a randomly-ordered array of constant strings.
-apr_array_header_t* fill_array(APR::Pool& pool)
-{
- apr_array_header_t* a = apr_array_make(pool.get(), 0, sizeof(const char*));
- APR_ARRAY_PUSH(a, const char*) = "primus";
- APR_ARRAY_PUSH(a, const char*) = "secundus";
- APR_ARRAY_PUSH(a, const char*) = "tertius";
- APR_ARRAY_PUSH(a, const char*) = "quartus";
- APR_ARRAY_PUSH(a, const char*) = "quintus";
- APR_ARRAY_PUSH(a, const char*) = "sextus";
- APR_ARRAY_PUSH(a, const char*) = "septimus";
- std::random_shuffle(&APR_ARRAY_IDX(a, 0, const char*),
- &APR_ARRAY_IDX(a, a->nelts, const char*));
- return a;
-}
-} // anonymous namespace
-
-//
-// Arrays
-//
-
-TEST(Arrays, CreateArray)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- Array array(pool);
-
- EXPECT_THAT(array.array(), testing::NotNull());
- EXPECT_EQ(0, array.size());
- EXPECT_EQ(sizeof(unsigned char), sizeof(Array::value_type));
- EXPECT_EQ(sizeof(Array::value_type), array.array()->elt_size);
-}
-
-TEST(Arrays, WrapArray)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- apr_array_header_t* apr_array =
- apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
-
- Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
-}
-
-TEST(Arrays, RewrapTypeMismatch)
-{
- typedef APR::Array<unsigned char> ByteArray;
- typedef APR::Array<int> IntArray;
-
- APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
-}
-
-TEST(Arrays, OutOfBounds)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- Array array(pool);
-
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
-}
-
-TEST(Arrays, Indexing)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(Arrays, CheckedIndexing)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(Arrays, Iteration)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::Iteration
- {
- Iteration(apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-TEST(Arrays, ConstIteration)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::ConstIteration
- {
- Iteration(const apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(const Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- const apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-TEST(Arrays, Push)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- const Array::size_type point = array.size();
- const Array::value_type first = array[0];
- const Array::value_type last = array[point - 1];
-
- array.push("octavius");
- array.push("nonus");
- array.push("decimus");
-
- EXPECT_EQ(point + 3, array.size());
- EXPECT_STREQ(first, array[0]);
- EXPECT_STREQ(last, array[point - 1]);
- EXPECT_STREQ("octavius", array[point]);
- EXPECT_STREQ("decimus", array[array.size() - 1]);
-}
-
-TEST(Arrays, Pop)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- for (Array::size_type i = 0, z = array.size(); i <= z; ++i)
- {
- const char** last = (!array.array()->nelts ? NULL
- : &APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- const char*));
- EXPECT_EQ(last, array.pop());
- }
-}
-
-//
-// ConstArrays
-//
-
-TEST(ConstArrays, WrapArray)
+BOOST_AUTO_TEST_CASE(wrap_array)
{
typedef APR::ConstArray<unsigned char> Array;
APR::Pool pool;
const apr_array_header_t* apr_array =
apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
+ BOOST_TEST_REQUIRE(apr_array != nullptr);
Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
+ BOOST_TEST(array.array() == apr_array);
+ BOOST_TEST(array.size() == 0);
}
-TEST(ConstArrays, RewrapTypeMismatch)
+BOOST_AUTO_TEST_CASE(rewrap_type_mismatch)
{
typedef APR::ConstArray<unsigned char> ByteArray;
typedef APR::Array<int> IntArray;
APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
+ BOOST_CHECK_THROW(ByteArray array(IntArray(pool).array()),
+ std::invalid_argument);
}
-TEST(ConstArrays, OutOfBounds)
+BOOST_AUTO_TEST_CASE(out_of_bounds)
{
typedef APR::ConstArray<unsigned char> Array;
APR::Pool pool;
Array array = Array(APR::Array<Array::value_type>(pool));
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
+ BOOST_CHECK_THROW(array.at(-1), std::out_of_range);
+ BOOST_CHECK_THROW(array.at(array.size()), std::out_of_range);
}
-TEST(ConstArrays, Indexing)
+BOOST_AUTO_TEST_CASE(indexing)
{
typedef APR::ConstArray<const char*> Array;
APR::Pool pool;
Array array(fill_array(pool));
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
+ BOOST_TEST(array[0] == APR_ARRAY_IDX(array.array(), 0, Array::value_type));
+ BOOST_TEST(array[array.size() - 1] == APR_ARRAY_IDX(array.array(),
array.array()->nelts - 1,
Array::value_type));
}
-TEST(ConstArrays, CheckedIndexing)
+BOOST_AUTO_TEST_CASE(checked_indexing)
{
typedef APR::ConstArray<const char*> Array;
APR::Pool pool;
Array array(fill_array(pool));
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
+ BOOST_TEST(array.at(0) == APR_ARRAY_IDX(array.array(), 0, Array::value_type));
+ BOOST_TEST(array.at(array.size() - 1) == APR_ARRAY_IDX(array.array(),
+ array.array()->nelts - 1,
+ Array::value_type));
}
-TEST(ConstArrays, Iteration)
+BOOST_AUTO_TEST_CASE(iteration)
{
typedef APR::ConstArray<const char*> Array;
@@ -340,7 +106,7 @@ TEST(ConstArrays, Iteration)
bool operator()(const Array::value_type& value)
{
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
+ BOOST_TEST(value == APR_ARRAY_IDX(m_raw_array, m_index,
Array::value_type));
++m_index;
return true;
@@ -354,82 +120,4 @@ TEST(ConstArrays, Iteration)
array.iterate(callback);
}
-//
-// Hash tables
-//
-
-TEST(Hashes, StringHash)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("b", hash.get("bbb"));
- EXPECT_STREQ("c", hash.get("cccc"));
-}
-
-TEST(Hashes, FixedStringHash)
-{
- // The point of this test is to verify that the key-length parameter
- // of the template actually limits the length of the keys.
- typedef APR::Hash<char, const char, 2> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa&qux", "a");
- hash.set("bb#foo", "b");
- hash.set("cc@bar", "c");
-
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa%foo"));
- EXPECT_STREQ("b", hash.get("bb*bar"));
- EXPECT_STREQ("c", hash.get("cc$qux"));
-}
-
-TEST(Hashes, Delete)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- hash.del("bbb");
-
- EXPECT_EQ(2, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("c", hash.get("cccc"));
-}
-
-TEST(Hashes, Iterate)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- struct C : public H::Iteration
- {
- H& m_hash;
- explicit C(H& hashref) : m_hash(hashref) {}
-
- bool operator()(const H::Key& key, H::value_type value)
- {
- EXPECT_STREQ(value, m_hash.get(key));
- return true;
- }
- } callback(hash);
-
- hash.iterate(callback, pool);
-}
+BOOST_AUTO_TEST_SUITE_END();
Copied: subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp (from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp?p2=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp&p1=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp&r1=1849322&r2=1849354&rev=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp (original)
+++ subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp Thu Dec 20 01:33:47 2018
@@ -19,346 +19,16 @@
* ====================================================================
*/
+#include <boost/test/unit_test.hpp>
+
#include <algorithm>
#include <stdexcept>
#include "../src/aprwrap.hpp"
-#include <gmock/gmock.h>
-
-//
-// Pools
-//
-
-TEST(Pools, InitializeGlobalPool)
-{
- APR::Pool pool;
- EXPECT_THAT(pool.get(), testing::NotNull());
- EXPECT_THAT(apr_pool_parent_get(pool.get()), testing::NotNull());
-}
-
-TEST(Pools, CreateSubpool)
-{
- APR::Pool pool;
- APR::Pool subpool(&pool);
- EXPECT_EQ(pool.get(), apr_pool_parent_get(subpool.get()));
-}
-
-TEST(Pools, TypedAllocate)
-{
- APR::Pool pool;
- const unsigned char* buffer = pool.alloc<unsigned char>(1);
- EXPECT_THAT(buffer, testing::NotNull());
-}
-
-// N.B.: This test may pass randomly even if zero-filled allocation
-// does not work correctly, since we cannot make assumptions about the
-// values of uninitialized memory.
-TEST(Pools, TypedAllocateZerofill)
-{
- APR::Pool pool;
- static const std::size_t size = 32757;
- const unsigned char* buffer = pool.allocz<unsigned char>(size);
- ASSERT_THAT(buffer, testing::NotNull());
- EXPECT_EQ(size, std::count(buffer, buffer + size, 0));
-}
-
-//
-// Array helper functions
-//
-
-namespace {
-// Create a randomly-ordered array of constant strings.
-apr_array_header_t* fill_array(APR::Pool& pool)
-{
- apr_array_header_t* a = apr_array_make(pool.get(), 0, sizeof(const char*));
- APR_ARRAY_PUSH(a, const char*) = "primus";
- APR_ARRAY_PUSH(a, const char*) = "secundus";
- APR_ARRAY_PUSH(a, const char*) = "tertius";
- APR_ARRAY_PUSH(a, const char*) = "quartus";
- APR_ARRAY_PUSH(a, const char*) = "quintus";
- APR_ARRAY_PUSH(a, const char*) = "sextus";
- APR_ARRAY_PUSH(a, const char*) = "septimus";
- std::random_shuffle(&APR_ARRAY_IDX(a, 0, const char*),
- &APR_ARRAY_IDX(a, a->nelts, const char*));
- return a;
-}
-} // anonymous namespace
-
-//
-// Arrays
-//
-
-TEST(Arrays, CreateArray)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- Array array(pool);
-
- EXPECT_THAT(array.array(), testing::NotNull());
- EXPECT_EQ(0, array.size());
- EXPECT_EQ(sizeof(unsigned char), sizeof(Array::value_type));
- EXPECT_EQ(sizeof(Array::value_type), array.array()->elt_size);
-}
-
-TEST(Arrays, WrapArray)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- apr_array_header_t* apr_array =
- apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
-
- Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
-}
-
-TEST(Arrays, RewrapTypeMismatch)
-{
- typedef APR::Array<unsigned char> ByteArray;
- typedef APR::Array<int> IntArray;
-
- APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
-}
-
-TEST(Arrays, OutOfBounds)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- Array array(pool);
-
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
-}
-
-TEST(Arrays, Indexing)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(Arrays, CheckedIndexing)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(Arrays, Iteration)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::Iteration
- {
- Iteration(apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-TEST(Arrays, ConstIteration)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::ConstIteration
- {
- Iteration(const apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(const Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- const apr_array_header_t* m_raw_array;
- } callback(array.array());
+BOOST_AUTO_TEST_SUITE(aprwrap_hashes);
- array.iterate(callback);
-}
-
-TEST(Arrays, Push)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- const Array::size_type point = array.size();
- const Array::value_type first = array[0];
- const Array::value_type last = array[point - 1];
-
- array.push("octavius");
- array.push("nonus");
- array.push("decimus");
-
- EXPECT_EQ(point + 3, array.size());
- EXPECT_STREQ(first, array[0]);
- EXPECT_STREQ(last, array[point - 1]);
- EXPECT_STREQ("octavius", array[point]);
- EXPECT_STREQ("decimus", array[array.size() - 1]);
-}
-
-TEST(Arrays, Pop)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- for (Array::size_type i = 0, z = array.size(); i <= z; ++i)
- {
- const char** last = (!array.array()->nelts ? NULL
- : &APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- const char*));
- EXPECT_EQ(last, array.pop());
- }
-}
-
-//
-// ConstArrays
-//
-
-TEST(ConstArrays, WrapArray)
-{
- typedef APR::ConstArray<unsigned char> Array;
-
- APR::Pool pool;
- const apr_array_header_t* apr_array =
- apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
-
- Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
-}
-
-TEST(ConstArrays, RewrapTypeMismatch)
-{
- typedef APR::ConstArray<unsigned char> ByteArray;
- typedef APR::Array<int> IntArray;
-
- APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
-}
-
-TEST(ConstArrays, OutOfBounds)
-{
- typedef APR::ConstArray<unsigned char> Array;
-
- APR::Pool pool;
- Array array = Array(APR::Array<Array::value_type>(pool));
-
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
-}
-
-TEST(ConstArrays, Indexing)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(ConstArrays, CheckedIndexing)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(ConstArrays, Iteration)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::Iteration
- {
- Iteration(const apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(const Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- const apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-//
-// Hash tables
-//
-
-TEST(Hashes, StringHash)
+BOOST_AUTO_TEST_CASE(string_hash)
{
typedef APR::Hash<char, const char> H;
@@ -368,13 +38,13 @@ TEST(Hashes, StringHash)
hash.set("bbb", "b");
hash.set("cccc", "c");
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("b", hash.get("bbb"));
- EXPECT_STREQ("c", hash.get("cccc"));
+ BOOST_TEST(hash.size() == 3);
+ BOOST_TEST(hash.get("aa") == "a");
+ BOOST_TEST(hash.get("bbb") == "b");
+ BOOST_TEST(hash.get("cccc") == "c");
}
-TEST(Hashes, FixedStringHash)
+BOOST_AUTO_TEST_CASE(fixed_string_hash)
{
// The point of this test is to verify that the key-length parameter
// of the template actually limits the length of the keys.
@@ -386,13 +56,13 @@ TEST(Hashes, FixedStringHash)
hash.set("bb#foo", "b");
hash.set("cc@bar", "c");
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa%foo"));
- EXPECT_STREQ("b", hash.get("bb*bar"));
- EXPECT_STREQ("c", hash.get("cc$qux"));
+ BOOST_TEST(hash.size() == 3);
+ BOOST_TEST(hash.get("aa%foo") == "a");
+ BOOST_TEST(hash.get("bb*bar") == "b");
+ BOOST_TEST(hash.get("cc$qux") == "c");
}
-TEST(Hashes, Delete)
+BOOST_AUTO_TEST_CASE(delete_element)
{
typedef APR::Hash<char, const char> H;
@@ -404,12 +74,12 @@ TEST(Hashes, Delete)
hash.del("bbb");
- EXPECT_EQ(2, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("c", hash.get("cccc"));
+ BOOST_TEST(hash.size() == 2);
+ BOOST_TEST(hash.get("aa") == "a");
+ BOOST_TEST(hash.get("cccc") == "c");
}
-TEST(Hashes, Iterate)
+BOOST_AUTO_TEST_CASE(iterate)
{
typedef APR::Hash<char, const char> H;
@@ -426,10 +96,12 @@ TEST(Hashes, Iterate)
bool operator()(const H::Key& key, H::value_type value)
{
- EXPECT_STREQ(value, m_hash.get(key));
+ BOOST_TEST(value == m_hash.get(key));
return true;
}
} callback(hash);
hash.iterate(callback, pool);
}
+
+BOOST_AUTO_TEST_SUITE_END();
Copied: subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_pools.cpp (from r1849322, subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_pools.cpp?p2=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_pools.cpp&p1=subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp&r1=1849322&r2=1849354&rev=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap.cpp (original)
+++ subversion/trunk/subversion/bindings/cxx/tests/test_aprwrap_pools.cpp Thu Dec 20 01:33:47 2018
@@ -19,417 +19,48 @@
* ====================================================================
*/
+#include <boost/test/unit_test.hpp>
+
+#include "fixture_initialize_apr.hpp"
+
#include <algorithm>
#include <stdexcept>
#include "../src/aprwrap.hpp"
-#include <gmock/gmock.h>
-
-//
-// Pools
-//
+BOOST_AUTO_TEST_SUITE(aprwrap_pools);
-TEST(Pools, InitializeGlobalPool)
+BOOST_AUTO_TEST_CASE(initialize_global_pool)
{
APR::Pool pool;
- EXPECT_THAT(pool.get(), testing::NotNull());
- EXPECT_THAT(apr_pool_parent_get(pool.get()), testing::NotNull());
+ BOOST_TEST(pool.get() != nullptr);
+ BOOST_TEST(apr_pool_parent_get(pool.get()) != nullptr);
}
-TEST(Pools, CreateSubpool)
+BOOST_AUTO_TEST_CASE(create_subpool)
{
APR::Pool pool;
APR::Pool subpool(&pool);
- EXPECT_EQ(pool.get(), apr_pool_parent_get(subpool.get()));
+ BOOST_TEST(pool.get() == apr_pool_parent_get(subpool.get()));
}
-TEST(Pools, TypedAllocate)
+BOOST_AUTO_TEST_CASE(typed_allocate)
{
APR::Pool pool;
const unsigned char* buffer = pool.alloc<unsigned char>(1);
- EXPECT_THAT(buffer, testing::NotNull());
+ BOOST_TEST(buffer != nullptr);
}
// N.B.: This test may pass randomly even if zero-filled allocation
// does not work correctly, since we cannot make assumptions about the
// values of uninitialized memory.
-TEST(Pools, TypedAllocateZerofill)
+BOOST_AUTO_TEST_CASE(typed_allocate_zerofill)
{
APR::Pool pool;
static const std::size_t size = 32757;
const unsigned char* buffer = pool.allocz<unsigned char>(size);
- ASSERT_THAT(buffer, testing::NotNull());
- EXPECT_EQ(size, std::count(buffer, buffer + size, 0));
-}
-
-//
-// Array helper functions
-//
-
-namespace {
-// Create a randomly-ordered array of constant strings.
-apr_array_header_t* fill_array(APR::Pool& pool)
-{
- apr_array_header_t* a = apr_array_make(pool.get(), 0, sizeof(const char*));
- APR_ARRAY_PUSH(a, const char*) = "primus";
- APR_ARRAY_PUSH(a, const char*) = "secundus";
- APR_ARRAY_PUSH(a, const char*) = "tertius";
- APR_ARRAY_PUSH(a, const char*) = "quartus";
- APR_ARRAY_PUSH(a, const char*) = "quintus";
- APR_ARRAY_PUSH(a, const char*) = "sextus";
- APR_ARRAY_PUSH(a, const char*) = "septimus";
- std::random_shuffle(&APR_ARRAY_IDX(a, 0, const char*),
- &APR_ARRAY_IDX(a, a->nelts, const char*));
- return a;
-}
-} // anonymous namespace
-
-//
-// Arrays
-//
-
-TEST(Arrays, CreateArray)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- Array array(pool);
-
- EXPECT_THAT(array.array(), testing::NotNull());
- EXPECT_EQ(0, array.size());
- EXPECT_EQ(sizeof(unsigned char), sizeof(Array::value_type));
- EXPECT_EQ(sizeof(Array::value_type), array.array()->elt_size);
-}
-
-TEST(Arrays, WrapArray)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- apr_array_header_t* apr_array =
- apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
-
- Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
-}
-
-TEST(Arrays, RewrapTypeMismatch)
-{
- typedef APR::Array<unsigned char> ByteArray;
- typedef APR::Array<int> IntArray;
-
- APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
-}
-
-TEST(Arrays, OutOfBounds)
-{
- typedef APR::Array<unsigned char> Array;
-
- APR::Pool pool;
- Array array(pool);
-
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
+ BOOST_TEST_REQUIRE(buffer != nullptr);
+ BOOST_TEST(std::count(buffer, buffer + size, 0) == size);
}
-TEST(Arrays, Indexing)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(Arrays, CheckedIndexing)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(Arrays, Iteration)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::Iteration
- {
- Iteration(apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-TEST(Arrays, ConstIteration)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::ConstIteration
- {
- Iteration(const apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(const Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- const apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-TEST(Arrays, Push)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- const Array::size_type point = array.size();
- const Array::value_type first = array[0];
- const Array::value_type last = array[point - 1];
-
- array.push("octavius");
- array.push("nonus");
- array.push("decimus");
-
- EXPECT_EQ(point + 3, array.size());
- EXPECT_STREQ(first, array[0]);
- EXPECT_STREQ(last, array[point - 1]);
- EXPECT_STREQ("octavius", array[point]);
- EXPECT_STREQ("decimus", array[array.size() - 1]);
-}
-
-TEST(Arrays, Pop)
-{
- typedef APR::Array<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- for (Array::size_type i = 0, z = array.size(); i <= z; ++i)
- {
- const char** last = (!array.array()->nelts ? NULL
- : &APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- const char*));
- EXPECT_EQ(last, array.pop());
- }
-}
-
-//
-// ConstArrays
-//
-
-TEST(ConstArrays, WrapArray)
-{
- typedef APR::ConstArray<unsigned char> Array;
-
- APR::Pool pool;
- const apr_array_header_t* apr_array =
- apr_array_make(pool.get(), 0, sizeof(Array::value_type));
- ASSERT_THAT(apr_array, testing::NotNull());
-
- Array array(apr_array);
- EXPECT_EQ(apr_array, array.array());
- EXPECT_EQ(0, array.size());
-}
-
-TEST(ConstArrays, RewrapTypeMismatch)
-{
- typedef APR::ConstArray<unsigned char> ByteArray;
- typedef APR::Array<int> IntArray;
-
- APR::Pool pool;
- EXPECT_THROW(ByteArray array(IntArray(pool).array()),
- std::invalid_argument);
-}
-
-TEST(ConstArrays, OutOfBounds)
-{
- typedef APR::ConstArray<unsigned char> Array;
-
- APR::Pool pool;
- Array array = Array(APR::Array<Array::value_type>(pool));
-
- EXPECT_THROW(array.at(-1), std::out_of_range);
- EXPECT_THROW(array.at(array.size()), std::out_of_range);
-}
-
-TEST(ConstArrays, Indexing)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array[0], APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array[array.size() - 1], APR_ARRAY_IDX(array.array(),
- array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(ConstArrays, CheckedIndexing)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- EXPECT_STREQ(array.at(0), APR_ARRAY_IDX(array.array(), 0, Array::value_type));
- EXPECT_STREQ(array.at(array.size() - 1),
- APR_ARRAY_IDX(array.array(), array.array()->nelts - 1,
- Array::value_type));
-}
-
-TEST(ConstArrays, Iteration)
-{
- typedef APR::ConstArray<const char*> Array;
-
- APR::Pool pool;
- Array array(fill_array(pool));
-
- struct Iteration : public Array::Iteration
- {
- Iteration(const apr_array_header_t* raw_array)
- : m_index(0), m_raw_array(raw_array)
- {}
-
- bool operator()(const Array::value_type& value)
- {
- EXPECT_STREQ(value, APR_ARRAY_IDX(m_raw_array, m_index,
- Array::value_type));
- ++m_index;
- return true;
- }
-
- private:
- Array::size_type m_index;
- const apr_array_header_t* m_raw_array;
- } callback(array.array());
-
- array.iterate(callback);
-}
-
-//
-// Hash tables
-//
-
-TEST(Hashes, StringHash)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("b", hash.get("bbb"));
- EXPECT_STREQ("c", hash.get("cccc"));
-}
-
-TEST(Hashes, FixedStringHash)
-{
- // The point of this test is to verify that the key-length parameter
- // of the template actually limits the length of the keys.
- typedef APR::Hash<char, const char, 2> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa&qux", "a");
- hash.set("bb#foo", "b");
- hash.set("cc@bar", "c");
-
- EXPECT_EQ(3, hash.size());
- EXPECT_STREQ("a", hash.get("aa%foo"));
- EXPECT_STREQ("b", hash.get("bb*bar"));
- EXPECT_STREQ("c", hash.get("cc$qux"));
-}
-
-TEST(Hashes, Delete)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- hash.del("bbb");
-
- EXPECT_EQ(2, hash.size());
- EXPECT_STREQ("a", hash.get("aa"));
- EXPECT_STREQ("c", hash.get("cccc"));
-}
-
-TEST(Hashes, Iterate)
-{
- typedef APR::Hash<char, const char> H;
-
- APR::Pool pool;
- H hash(pool);
- hash.set("aa", "a");
- hash.set("bbb", "b");
- hash.set("cccc", "c");
-
- struct C : public H::Iteration
- {
- H& m_hash;
- explicit C(H& hashref) : m_hash(hashref) {}
-
- bool operator()(const H::Key& key, H::value_type value)
- {
- EXPECT_STREQ(value, m_hash.get(key));
- return true;
- }
- } callback(hash);
-
- hash.iterate(callback, pool);
-}
+BOOST_AUTO_TEST_SUITE_END();
Copied: subversion/trunk/subversion/bindings/cxx/tests/test_exceptions.cpp (from r1849353, subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/cxx/tests/test_exceptions.cpp?p2=subversion/trunk/subversion/bindings/cxx/tests/test_exceptions.cpp&p1=subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp&r1=1849353&r2=1849354&rev=1849354&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/cxx/tests/test_exception.cpp (original)
+++ subversion/trunk/subversion/bindings/cxx/tests/test_exceptions.cpp Thu Dec 20 01:33:47 2018
@@ -18,6 +18,7 @@
* under the License.
* ====================================================================
*/
+#include <boost/test/unit_test.hpp>
#include <algorithm>
#include <cstdio>
@@ -28,13 +29,11 @@
#include "svnxx.hpp"
#include "../src/private.hpp"
-#include <apr.h>
+//#include <apr.h>
#include "svn_error.h"
#undef TRUE
#undef FALSE
-#include <gmock/gmock.h>
-
namespace {
svn_error_t* make_error_test_error()
{
@@ -49,7 +48,9 @@ svn_error_t* make_error_test_error()
}
} // anonymous namespace
-TEST(Exceptions, CatchError)
+BOOST_AUTO_TEST_SUITE(exceptions);
+
+BOOST_AUTO_TEST_CASE(catch_error)
{
try
{
@@ -58,27 +59,27 @@ TEST(Exceptions, CatchError)
catch (const SVN::Error& err)
{
SVN::Error::MessageList ml = err.messages();
- EXPECT_EQ(3, ml.size());
- EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, ml[0].code());
- EXPECT_EQ(SVN_ERR_BASE, ml[1].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, ml[2].code());
+ BOOST_TEST(ml.size() == 3);
+ BOOST_TEST(ml[0].code() == SVN_ERR_UNSUPPORTED_FEATURE);
+ BOOST_TEST(ml[1].code() == SVN_ERR_BASE);
+ BOOST_TEST(ml[2].code() == SVN_ERR_TEST_FAILED);
SVN::Error::MessageList tml = err.traced_messages();
#ifdef SVN_DEBUG
- EXPECT_EQ(8, tml.size());
- EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[0].code());
- EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[1].code());
- EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[2].code());
- EXPECT_EQ(SVN_ERR_BASE, tml[3].code());
- EXPECT_EQ(SVN_ERR_BASE, tml[4].code());
- EXPECT_EQ(SVN_ERR_BASE, tml[5].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[6].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[7].code());
+ BOOST_TEST(tml.size() == 8);
+ BOOST_TEST(tml[0].code() == SVN_ERR_UNSUPPORTED_FEATURE);
+ BOOST_TEST(tml[1].code() == SVN_ERR_UNSUPPORTED_FEATURE);
+ BOOST_TEST(tml[2].code() == SVN_ERR_UNSUPPORTED_FEATURE);
+ BOOST_TEST(tml[3].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[4].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[5].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[6].code() == SVN_ERR_TEST_FAILED);
+ BOOST_TEST(tml[7].code() == SVN_ERR_TEST_FAILED);
#else // !SVN_DEBUG
- EXPECT_EQ(3, tml.size());
- EXPECT_EQ(SVN_ERR_UNSUPPORTED_FEATURE, tml[0].code());
- EXPECT_EQ(SVN_ERR_BASE, tml[1].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[2].code());
+ BOOST_TEST(3, tml.size());
+ BOOST_TEST(SVN_ERR_UNSUPPORTED_FEATURE, tml[0].code());
+ BOOST_TEST(SVN_ERR_BASE, tml[1].code());
+ BOOST_TEST(SVN_ERR_TEST_FAILED, tml[2].code());
#endif // SVN_DEBUG
}
}
@@ -98,7 +99,7 @@ svn_error_t* make_cancel_test_error()
}
} // anonymous namespace
-TEST(Exceptions, CatchCancelled)
+BOOST_AUTO_TEST_CASE(catch_canceled)
{
try
{
@@ -107,27 +108,29 @@ TEST(Exceptions, CatchCancelled)
catch (const SVN::Cancelled& err)
{
SVN::Error::MessageList ml = err.messages();
- EXPECT_EQ(3, ml.size());
- EXPECT_EQ(SVN_ERR_BASE, ml[0].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, ml[1].code());
- EXPECT_EQ(SVN_ERR_CANCELLED, ml[2].code());
+ BOOST_TEST(ml.size() == 3);
+ BOOST_TEST(ml[0].code() == SVN_ERR_BASE);
+ BOOST_TEST(ml[1].code() == SVN_ERR_TEST_FAILED);
+ BOOST_TEST(ml[2].code() == SVN_ERR_CANCELLED);
SVN::Error::MessageList tml = err.traced_messages();
#ifdef SVN_DEBUG
- EXPECT_EQ(8, tml.size());
- EXPECT_EQ(SVN_ERR_BASE, tml[0].code());
- EXPECT_EQ(SVN_ERR_BASE, tml[1].code());
- EXPECT_EQ(SVN_ERR_BASE, tml[2].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[3].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[4].code());
- EXPECT_EQ(SVN_ERR_CANCELLED, tml[5].code());
- EXPECT_EQ(SVN_ERR_CANCELLED, tml[6].code());
- EXPECT_EQ(SVN_ERR_CANCELLED, tml[7].code());
+ BOOST_TEST(tml.size() == 8);
+ BOOST_TEST(tml[0].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[1].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[2].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[3].code() == SVN_ERR_TEST_FAILED);
+ BOOST_TEST(tml[4].code() == SVN_ERR_TEST_FAILED);
+ BOOST_TEST(tml[5].code() == SVN_ERR_CANCELLED);
+ BOOST_TEST(tml[6].code() == SVN_ERR_CANCELLED);
+ BOOST_TEST(tml[7].code() == SVN_ERR_CANCELLED);
#else // !SVN_DEBUG
- EXPECT_EQ(3, tml.size());
- EXPECT_EQ(SVN_ERR_BASE, tml[0].code());
- EXPECT_EQ(SVN_ERR_TEST_FAILED, tml[1].code());
- EXPECT_EQ(SVN_ERR_CANCELLED, tml[2].code());
+ BOOST_TEST(tml.size() == 3);
+ BOOST_TEST(tml[0].code() == SVN_ERR_BASE);
+ BOOST_TEST(tml[1].code() == SVN_ERR_TEST_FAILED);
+ BOOST_TEST(tml[2].code() == SVN_ERR_CANCELLED);
#endif // SVN_DEBUG
}
}
+
+BOOST_AUTO_TEST_SUITE_END();