Hello community,
here is the log from the commit of package librevenge for openSUSE:Factory checked in at 2016-01-13 22:44:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/librevenge (Old)
and /work/SRC/openSUSE:Factory/.librevenge.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "librevenge"
Changes:
--------
--- /work/SRC/openSUSE:Factory/librevenge/librevenge.changes 2016-01-04 09:20:26.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.librevenge.new/librevenge.changes 2016-01-13 22:44:37.000000000 +0100
@@ -1,0 +2,15 @@
+Tue Jan 12 09:14:06 UTC 2016 - fstrba@suse.com
+
+- Version bump to 0.0.4:
+ * Fix possible crash in raw generators for unbalanced open/close
+ calls.
+ * Fix build in C++11 mode.
+ * Fix gdb pretty printers and make them compatible with Python 3.
+ * Fix RVNGString::Iter::last(), which only worked correctly for
+ strings containing only ASCII characters.
+ * Document the difference between RVNGString::len() and
+ RVNGString::size().
+ * Considerably improve performance of RVNGString iterator (a
+ crude measurement shows at least 45% improvement).
+
+-------------------------------------------------------------------
Old:
----
librevenge-0.0.3.tar.xz
New:
----
librevenge-0.0.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ librevenge.spec ++++++
--- /var/tmp/diff_new_pack.1MuhYU/_old 2016-01-13 22:44:38.000000000 +0100
+++ /var/tmp/diff_new_pack.1MuhYU/_new 2016-01-13 22:44:38.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package librevenge
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global apiversion 0.0
%global pkgextension 0_0-0
Name: librevenge
-Version: 0.0.3
+Version: 0.0.4
Release: 0
Summary: A base library for writing document import filters
License: LGPL-2.1+ or MPL-2.0+
++++++ librevenge-0.0.3.tar.xz -> librevenge-0.0.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/ChangeLog new/librevenge-0.0.4/ChangeLog
--- old/librevenge-0.0.3/ChangeLog 2015-12-24 13:21:19.000000000 +0100
+++ new/librevenge-0.0.4/ChangeLog 2016-01-12 08:38:15.000000000 +0100
@@ -1,3 +1,67 @@
+2016-01-11 David Tardon [c22162a463a76b8a210a27f3c4528682a186e19f]
+
+ update NEWS
+
+
+2016-01-11 David Tardon [99f2c3946155f9cf79e8ffc69587fd1e2f99d3ea]
+
+ avoid unnecessary reallocations
+
+ By my crude measurement (time ./iter-test), this improves the iteration
+ time by at least 45%. It would be possible to shave off few more
+ percents if we could avoid the strlen(), but that'd require adding a
+ member var., which we currently cannot do because of ABI compatibility.
+
+2016-01-11 David Tardon [50226aeb3d993602e4ba6589238b0d570593d165]
+
+ prepare for a release
+
+
+2016-01-05 David Tardon [7b08af6bb29422b48ccf29e4f55f5ce467b1c363]
+
+ document RVNGString len() and size()
+
+
+2016-01-05 David Tardon [bc7d6c3041c8d5ac4585a5ebee40173ba0280728]
+
+ one line is enough
+
+
+2016-01-05 David Tardon [e014745479f488aa32f26a63dd01256d50eb8cd0]
+
+ rewrite sligthly
+
+
+2016-01-05 David Tardon [4a6588974bc403dd1a0401ee6a3abbbd8a7be703]
+
+ use the buffer data length, not the char. count
+
+
+2016-01-05 David Tardon [08d174aa01b870d986c78717a45fbb9bf59f45a4]
+
+ make pretty printers python3-compatible
+
+
+2016-01-05 David Tardon [56dff742330d2a742b4257bba8a89bb5ec633a53]
+
+ test string iterator
+
+
+2015-12-30 David Tardon [fac633c7e3f06b940e7c8650bb3c6b9c11c9557e]
+
+ fix build in c++11 mode
+
+
+2015-12-30 David Tardon [0cd9da39bc0828db34f0cf892d4aa600a709da18]
+
+ avoid access to empty stack
+
+
+2015-12-26 David Tardon [baf98cf3c7923d7a89a7f5facbaa02669b1a0245]
+
+ fix import statement
+
+
2015-12-24 David Tardon [b3646641081967574e6fc0bcecfae289274ae26a]
linker path is not needed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/NEWS new/librevenge-0.0.4/NEWS
--- old/librevenge-0.0.3/NEWS 2015-12-24 12:29:10.000000000 +0100
+++ new/librevenge-0.0.4/NEWS 2016-01-11 15:42:45.000000000 +0100
@@ -1,3 +1,14 @@
+librevenge 0.0.4
+
+- Fix possible crash in raw generators for unbalanced open/close calls.
+- Fix build in C++11 mode.
+- Fix gdb pretty printers and make them compatible with Python 3.
+- Fix RVNGString::Iter::last(), which only worked correctly for strings
+ containing only ASCII characters.
+- Document the difference between RVNGString::len() and RVNGString::size().
+- Considerably improve performance of RVNGString iterator (a crude
+ measurement shows at least 45% improvement).
+
librevenge 0.0.3
- SVG generator: fix the center of rotation.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/configure new/librevenge-0.0.4/configure
--- old/librevenge-0.0.3/configure 2015-12-24 13:04:00.000000000 +0100
+++ new/librevenge-0.0.4/configure 2016-01-11 15:21:32.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for librevenge 0.0.3.
+# Generated by GNU Autoconf 2.69 for librevenge 0.0.4.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
# Identity of this package.
PACKAGE_NAME='librevenge'
PACKAGE_TARNAME='librevenge'
-PACKAGE_VERSION='0.0.3'
-PACKAGE_STRING='librevenge 0.0.3'
+PACKAGE_VERSION='0.0.4'
+PACKAGE_STRING='librevenge 0.0.4'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1378,7 +1378,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures librevenge 0.0.3 to adapt to many kinds of systems.
+\`configure' configures librevenge 0.0.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1448,7 +1448,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of librevenge 0.0.3:";;
+ short | recursive ) echo "Configuration of librevenge 0.0.4:";;
esac
cat <<\_ACEOF
@@ -1585,7 +1585,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-librevenge configure 0.0.3
+librevenge configure 0.0.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2102,7 +2102,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by librevenge $as_me 0.0.3, which was
+It was created by librevenge $as_me 0.0.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2968,7 +2968,7 @@
# Define the identity of the package.
PACKAGE='librevenge'
- VERSION='0.0.3'
+ VERSION='0.0.4'
cat >>confdefs.h <<_ACEOF
@@ -17152,9 +17152,9 @@
RVNG_MINOR_VERSION=0
-RVNG_MICRO_VERSION=3
+RVNG_MICRO_VERSION=4
-RVNG_VERSION=0.0.3
+RVNG_VERSION=0.0.4
# AC_SUBST(LT_RELEASE, [librevenge_version_major.librevenge_version_minor])
LT_CURRENT=`expr 100 '*' 0 + 0`
@@ -17162,7 +17162,7 @@
LT_AGE=0
# LT_AGE=librevenge_version_minor
-LT_REVISION=3
+LT_REVISION=4
@@ -18735,7 +18735,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by librevenge $as_me 0.0.3, which was
+This file was extended by librevenge $as_me 0.0.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18801,7 +18801,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-librevenge config.status 0.0.3
+librevenge config.status 0.0.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/configure.ac new/librevenge-0.0.4/configure.ac
--- old/librevenge-0.0.3/configure.ac 2015-12-24 12:29:10.000000000 +0100
+++ new/librevenge-0.0.4/configure.ac 2016-01-11 14:03:42.000000000 +0100
@@ -7,7 +7,7 @@
# ====================
m4_define([librevenge_version_major],[0])
m4_define([librevenge_version_minor],[0])
-m4_define([librevenge_version_micro],[3])
+m4_define([librevenge_version_micro],[4])
m4_define([librevenge_version],[librevenge_version_major.librevenge_version_minor.librevenge_version_micro])
# =============
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/data/gdb/librevenge/util/printing.py new/librevenge-0.0.4/data/gdb/librevenge/util/printing.py
--- old/librevenge-0.0.3/data/gdb/librevenge/util/printing.py 2014-06-26 16:58:23.000000000 +0200
+++ new/librevenge-0.0.4/data/gdb/librevenge/util/printing.py 2016-01-05 13:09:42.000000000 +0100
@@ -18,7 +18,9 @@
import gdb
import re
-from compatibility import use_gdb_printing
+from six import iteritems
+
+from librevenge.util.compatibility import use_gdb_printing
class SimplePrinter(object):
@@ -80,7 +82,7 @@
return len(self.map)
def __getitem__(self, type):
- for (test, printer) in self.map.iteritems():
+ for (test, printer) in iteritems(self.map):
if test(type):
return printer
return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/inc/librevenge/RVNGString.h new/librevenge-0.0.4/inc/librevenge/RVNGString.h
--- old/librevenge-0.0.3/inc/librevenge/RVNGString.h 2015-06-27 13:54:41.000000000 +0200
+++ new/librevenge-0.0.4/inc/librevenge/RVNGString.h 2016-01-05 14:08:13.000000000 +0100
@@ -28,6 +28,8 @@
class RVNGStringImpl;
+/** UTF-8 string.
+ */
class REVENGE_API RVNGString
{
public:
@@ -55,8 +57,20 @@
static RVNGString escapeXML(const char *s);
const char *cstr() const;
+
+ /** Return the number of UTF-8 characters.
+ *
+ * @sa size()
+ */
int len() const;
+ /** Return the size in bytes of the data buffer.
+ *
+ * This is equivalent to <code>strlen(str.cstr())</code>
+ *
+ * @sa len()
+ */
unsigned long size() const;
+
bool empty() const;
void sprintf(const char *format, ...) REVENGE_ATTRIBUTE_PRINTF(2, 3);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/lib/RVNGPropertyList.cpp new/librevenge-0.0.4/src/lib/RVNGPropertyList.cpp
--- old/librevenge-0.0.3/src/lib/RVNGPropertyList.cpp 2015-06-27 13:54:41.000000000 +0200
+++ new/librevenge-0.0.4/src/lib/RVNGPropertyList.cpp 2016-01-05 13:59:57.000000000 +0100
@@ -446,10 +446,7 @@
bool RVNGPropertyListIterImpl::last()
{
- if (m_iter == m_map->end())
- return true;
-
- return false;
+ return m_iter == m_map->end();
}
const RVNGProperty *RVNGPropertyListIterImpl::operator()() const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/lib/RVNGRawGeneratorBase.h new/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.h
--- old/librevenge-0.0.3/src/lib/RVNGRawGeneratorBase.h 2015-06-27 13:54:41.000000000 +0200
+++ new/librevenge-0.0.4/src/lib/RVNGRawGeneratorBase.h 2016-01-04 21:08:06.000000000 +0100
@@ -47,10 +47,17 @@
m_impl->idprintf M; \
else \
{ \
- const int lc = m_impl->m_callStack.top(); \
- if (lc != L) \
+ if (m_impl->m_callStack.empty()) \
+ { \
m_impl->m_callbackMisses++; \
- m_impl->m_callStack.pop(); \
+ } \
+ else \
+ { \
+ const int lc = m_impl->m_callStack.top(); \
+ if (lc != L) \
+ m_impl->m_callbackMisses++; \
+ m_impl->m_callStack.pop(); \
+ } \
}
namespace librevenge
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/lib/RVNGString.cpp new/librevenge-0.0.4/src/lib/RVNGString.cpp
--- old/librevenge-0.0.3/src/lib/RVNGString.cpp 2014-11-28 16:25:52.000000000 +0100
+++ new/librevenge-0.0.4/src/lib/RVNGString.cpp 2016-01-11 15:35:09.000000000 +0100
@@ -20,10 +20,12 @@
#include "librevenge_internal.h"
+#include <cassert>
#include <cstring>
#include <string>
#include
#include
+#include <utility>
#define FIRST_BUF_SIZE 128
#ifdef _MSC_VER
@@ -329,20 +331,25 @@
bool RVNGString::Iter::last()
{
- if (m_pos >= m_stringImpl->len())
- return true;
- return false;
+ assert(m_pos >= -1);
+ if (m_pos == -1)
+ return false;
+ return unsigned(m_pos) >= m_stringImpl->m_buf.length();
}
const char *RVNGString::Iter::operator()() const
{
if (m_pos == (-1)) return 0;
- if (m_curChar) delete [] m_curChar;
- m_curChar = 0;
int charLength =(int)(librvng_utf8_next_char(&(m_stringImpl->m_buf.c_str()[m_pos])) -
&(m_stringImpl->m_buf.c_str()[m_pos]));
- m_curChar = new char[charLength+1];
+ const int curCharLength = m_curChar ? int(unsigned(std::strlen(m_curChar))) : 0;
+ if (curCharLength < charLength)
+ {
+ char *newChar = new char[charLength+1];
+ std::swap(m_curChar, newChar);
+ delete[] newChar;
+ }
for (int i=0; im_buf[size_t(m_pos+i)];
m_curChar[charLength]='\0';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/lib/RVNGTextTextGenerator.cpp new/librevenge-0.0.4/src/lib/RVNGTextTextGenerator.cpp
--- old/librevenge-0.0.3/src/lib/RVNGTextTextGenerator.cpp 2015-08-30 08:03:12.000000000 +0200
+++ new/librevenge-0.0.4/src/lib/RVNGTextTextGenerator.cpp 2016-01-04 21:08:06.000000000 +0100
@@ -123,7 +123,7 @@
if (!m_impl->m_endnotes.str().empty())
{
*m_impl->m_stream << '\n';
- *m_impl->m_stream << m_impl->m_endnotes;
+ *m_impl->m_stream << m_impl->m_endnotes.str();
}
m_impl->m_document=m_impl->m_stream->str().c_str();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/test/Makefile.am new/librevenge-0.0.4/src/test/Makefile.am
--- old/librevenge-0.0.3/src/test/Makefile.am 2015-12-24 13:18:15.000000000 +0100
+++ new/librevenge-0.0.4/src/test/Makefile.am 2016-01-04 21:08:08.000000000 +0100
@@ -18,6 +18,7 @@
RVNGDirectoryStreamTest.cpp \
RVNGOLEStreamTest.cpp \
RVNGStreamTest.cpp \
+ RVNGStringIterTest.cpp \
RVNGStringTest.cpp \
test.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/test/Makefile.in new/librevenge-0.0.4/src/test/Makefile.in
--- old/librevenge-0.0.3/src/test/Makefile.in 2015-12-24 13:18:18.000000000 +0100
+++ new/librevenge-0.0.4/src/test/Makefile.in 2016-01-11 15:21:33.000000000 +0100
@@ -106,6 +106,7 @@
am_test_OBJECTS = test-RVNGBinaryDataTest.$(OBJEXT) \
test-RVNGDirectoryStreamTest.$(OBJEXT) \
test-RVNGOLEStreamTest.$(OBJEXT) test-RVNGStreamTest.$(OBJEXT) \
+ test-RVNGStringIterTest.$(OBJEXT) \
test-RVNGStringTest.$(OBJEXT) test-test.$(OBJEXT)
test_OBJECTS = $(am_test_OBJECTS)
am__DEPENDENCIES_1 =
@@ -547,6 +548,7 @@
RVNGDirectoryStreamTest.cpp \
RVNGOLEStreamTest.cpp \
RVNGStreamTest.cpp \
+ RVNGStringIterTest.cpp \
RVNGStringTest.cpp \
test.cpp
@@ -623,6 +625,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-RVNGDirectoryStreamTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-RVNGOLEStreamTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-RVNGStreamTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-RVNGStringIterTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-RVNGStringTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-test.Po@am__quote@
@@ -703,6 +706,20 @@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test-RVNGStreamTest.obj `if test -f 'RVNGStreamTest.cpp'; then $(CYGPATH_W) 'RVNGStreamTest.cpp'; else $(CYGPATH_W) '$(srcdir)/RVNGStreamTest.cpp'; fi`
+test-RVNGStringIterTest.o: RVNGStringIterTest.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test-RVNGStringIterTest.o -MD -MP -MF $(DEPDIR)/test-RVNGStringIterTest.Tpo -c -o test-RVNGStringIterTest.o `test -f 'RVNGStringIterTest.cpp' || echo '$(srcdir)/'`RVNGStringIterTest.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-RVNGStringIterTest.Tpo $(DEPDIR)/test-RVNGStringIterTest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='RVNGStringIterTest.cpp' object='test-RVNGStringIterTest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test-RVNGStringIterTest.o `test -f 'RVNGStringIterTest.cpp' || echo '$(srcdir)/'`RVNGStringIterTest.cpp
+
+test-RVNGStringIterTest.obj: RVNGStringIterTest.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test-RVNGStringIterTest.obj -MD -MP -MF $(DEPDIR)/test-RVNGStringIterTest.Tpo -c -o test-RVNGStringIterTest.obj `if test -f 'RVNGStringIterTest.cpp'; then $(CYGPATH_W) 'RVNGStringIterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/RVNGStringIterTest.cpp'; fi`
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-RVNGStringIterTest.Tpo $(DEPDIR)/test-RVNGStringIterTest.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='RVNGStringIterTest.cpp' object='test-RVNGStringIterTest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o test-RVNGStringIterTest.obj `if test -f 'RVNGStringIterTest.cpp'; then $(CYGPATH_W) 'RVNGStringIterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/RVNGStringIterTest.cpp'; fi`
+
test-RVNGStringTest.o: RVNGStringTest.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT test-RVNGStringTest.o -MD -MP -MF $(DEPDIR)/test-RVNGStringTest.Tpo -c -o test-RVNGStringTest.o `test -f 'RVNGStringTest.cpp' || echo '$(srcdir)/'`RVNGStringTest.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test-RVNGStringTest.Tpo $(DEPDIR)/test-RVNGStringTest.Po
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/librevenge-0.0.3/src/test/RVNGStringIterTest.cpp new/librevenge-0.0.4/src/test/RVNGStringIterTest.cpp
--- old/librevenge-0.0.3/src/test/RVNGStringIterTest.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/librevenge-0.0.4/src/test/RVNGStringIterTest.cpp 2016-01-05 10:29:17.000000000 +0100
@@ -0,0 +1,135 @@
+/* librevenge
+ * Version: MPL 2.0 / LGPLv2.1+
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Alternatively, the contents of this file may be used under the terms
+ * of the GNU Lesser General Public License Version 2.1 or later
+ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
+ * applicable instead of those above.
+ */
+
+#ifndef RVNGSTRINGITERTEST_H
+#define RVNGSTRINGITERTEST_H
+
+#include
+
+#include
+#include
+
+#include
+
+#include "librevenge_internal.h"
+
+namespace test
+{
+
+using librevenge::RVNGString;
+
+using std::string;
+
+namespace
+{
+
+void implTestIter(const string &msg, const char *chars[], const std::size_t count)
+{
+ assert(count > 1);
+
+ RVNGString str;
+ for (std::size_t i = 0; i != count; ++i)
+ str.append(chars[i]);
+
+ RVNGString::Iter iter(str);
+
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "not at end after creation", !iter.last());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(msg + ": " + "deref. at first char", string(chars[0]), string(iter()));
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(msg + ": " + "second deref. doesn't change result", string(chars[0]), string(iter()));
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "can advance to second char", iter.next());
+
+ for (std::size_t i = 1; i < count - 1; ++i)
+ {
+ const string pos(boost::lexical_cast<string>(i));
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "not at end at char pos " + pos, !iter.last());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(msg + ": " + "deref. at char pos " + pos, string(chars[i]), string(iter()));
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "can advance at char pos " + pos, iter.next());
+ }
+
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "not at end at last char", !iter.last());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(msg + ": " + "deref. at last char", string(chars[count - 1]), string(iter()));
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "can't advance anymore", !iter.next());
+ CPPUNIT_ASSERT_MESSAGE(msg + ": " + "is at end", iter.last());
+}
+
+}
+
+class RVNGStringIterTest : public CPPUNIT_NS::TestFixture
+{
+public:
+ virtual void setUp();
+ virtual void tearDown();
+
+private:
+ CPPUNIT_TEST_SUITE(RVNGStringIterTest);
+ CPPUNIT_TEST(testEmpty);
+ CPPUNIT_TEST(testNonempty);
+ CPPUNIT_TEST(testRewind);
+ CPPUNIT_TEST_SUITE_END();
+
+private:
+ void testEmpty();
+ void testNonempty();
+ void testRewind();
+};
+
+void RVNGStringIterTest::setUp()
+{
+}
+
+void RVNGStringIterTest::tearDown()
+{
+}
+
+void RVNGStringIterTest::testEmpty()
+{
+ const RVNGString str;
+ RVNGString::Iter iter(str);
+
+ CPPUNIT_ASSERT_MESSAGE("can't advance on empty string", !iter.next());
+ CPPUNIT_ASSERT_MESSAGE("deref. returns a string", iter());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("deref. returns an empty string", string(), string(iter()));
+ CPPUNIT_ASSERT_MESSAGE("check end", iter.last());
+}
+
+void RVNGStringIterTest::testNonempty()
+{
+ const char *ascii[] = {"a", "b", "c"};
+ implTestIter("ASCII text", ascii, RVNG_NUM_ELEMENTS(ascii));
+ const char *cyrilic[] = {"\xd0\xb0", "\xd0\xb1", "\xd0\xb2"};
+ implTestIter("Cyrilic text", cyrilic, RVNG_NUM_ELEMENTS(cyrilic));
+ const char *mixed[] = {"a", "\xd0\xb1", "c", "\xd0\xb3"};
+ implTestIter("Mixed text", mixed, RVNG_NUM_ELEMENTS(mixed));
+}
+
+void RVNGStringIterTest::testRewind()
+{
+ const RVNGString str;
+ RVNGString::Iter iter(str);
+
+ CPPUNIT_ASSERT_MESSAGE("at end", iter.last());
+ iter.rewind();
+ CPPUNIT_ASSERT_MESSAGE("not at end", !iter.last());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("deref. is ignored", reinterpret_cast(0), iter());
+ CPPUNIT_ASSERT_MESSAGE("nothing to step forward at", !iter.next());
+ CPPUNIT_ASSERT_MESSAGE("at end again", iter.last());
+ CPPUNIT_ASSERT_MESSAGE("deref. returns a string", iter());
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(RVNGStringIterTest);
+
+}
+
+#endif // RVNGSTRINGITERTEST_H
+
+/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */