[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 4 commits - configure.in external_deps.lst sal/prj sal/qa set_soenv.in solenv/inc vcl/aqua
Herbert Dürr
hdu at apache.org
Mon Jun 2 05:07:38 PDT 2014
configure.in | 16 ++++++++++++++
external_deps.lst | 5 ++++
sal/prj/build.lst | 4 ++-
sal/qa/sal/makefile.mk | 32 ++++++++++++++--------------
sal/qa/sal/test_types.cxx | 26 ++++++++--------------
set_soenv.in | 3 +-
solenv/inc/_tg_app.mk | 7 ++++++
solenv/inc/libs.mk | 6 ++++-
solenv/inc/target.mk | 41 ++++++++++++++++++++++++++++++++++++
solenv/inc/tg_app.mk | 7 ++++++
vcl/aqua/source/gdi/ctlayout.cxx | 14 ++++++------
vcl/aqua/source/gdi/salgdiutils.cxx | 7 ++++--
12 files changed, 124 insertions(+), 44 deletions(-)
New commits:
commit 513225be9cbadee6d8f7fd4e9910e10fc5ff571b
Author: Herbert Dürr <hdu at apache.org>
Date: Mon Jun 2 11:54:15 2014 +0000
#i125020# allow antialiasing on all update borders for Aqua graphics
diff --git a/vcl/aqua/source/gdi/salgdiutils.cxx b/vcl/aqua/source/gdi/salgdiutils.cxx
index bf0d9ee..ca120d0 100644
--- a/vcl/aqua/source/gdi/salgdiutils.cxx
+++ b/vcl/aqua/source/gdi/salgdiutils.cxx
@@ -243,10 +243,13 @@ void AquaSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeigh
{
// update a little more around the designated rectangle
// this helps with antialiased rendering
+ // Rounding down x and width can accumulate a rounding error of up to 2
+ // The decrementing of x, the rounding error and the antialiasing border
+ // require that the width and the height need to be increased by four
const Rectangle aVclRect(Point(static_cast<long int>(lX-1),
static_cast<long int>(lY-1) ),
- Size( static_cast<long int>(lWidth+3),
- static_cast<long int>(lHeight+3) ) );
+ Size( static_cast<long int>(lWidth+4),
+ static_cast<long int>(lHeight+4) ) );
mpFrame->maInvalidRect.Union( aVclRect );
}
}
commit 073ec69fb970830d39c8700317ee74dbbdfd1fda
Author: Herbert Dürr <hdu at apache.org>
Date: Mon Jun 2 11:47:23 2014 +0000
#i125020# fix rounding error in AquaSalGraphics::RefreshRect()
Rounding left and width down can accumulate a rounding error of almost two in
the calculation of right. The existing code compensates for this by increasing
the width by two, but since left has been decremented by one to accommodate for
antialiasing artifacts this compensation is one to few by itself and two to few
when accounting for antialiasing artifacts on the right. Y-pos and height have
the same problems and get the matching fix.
diff --git a/vcl/aqua/source/gdi/salgdiutils.cxx b/vcl/aqua/source/gdi/salgdiutils.cxx
index a219609..bf0d9ee 100644
--- a/vcl/aqua/source/gdi/salgdiutils.cxx
+++ b/vcl/aqua/source/gdi/salgdiutils.cxx
@@ -245,8 +245,8 @@ void AquaSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeigh
// this helps with antialiased rendering
const Rectangle aVclRect(Point(static_cast<long int>(lX-1),
static_cast<long int>(lY-1) ),
- Size( static_cast<long int>(lWidth+2),
- static_cast<long int>(lHeight+2) ) );
+ Size( static_cast<long int>(lWidth+3),
+ static_cast<long int>(lHeight+3) ) );
mpFrame->maInvalidRect.Union( aVclRect );
}
}
commit ee042661b996fd00d5504caf4f4be60f77bf880f
Author: Herbert Dürr <hdu at apache.org>
Date: Mon Jun 2 11:30:49 2014 +0000
#i125020# fix the calculation of the text-update rectangle in CoreText
by doing the calculation before CTLineDraw() updates the text position.
Requesting the update early is possible because that update region is
not used until AquaSalInstance::Yield().
diff --git a/vcl/aqua/source/gdi/ctlayout.cxx b/vcl/aqua/source/gdi/ctlayout.cxx
index 880caae..aac5e77 100644
--- a/vcl/aqua/source/gdi/ctlayout.cxx
+++ b/vcl/aqua/source/gdi/ctlayout.cxx
@@ -265,13 +265,7 @@ void CTLayout::DrawText( SalGraphics& rGraphics ) const
CGContextSetTextPosition( rAquaGraphics.mrContext, aTextPos.x, aTextPos.y );
- // set the text color as fill color (see kCTForegroundColorFromContextAttributeName)
- CGContextSetFillColor( rAquaGraphics.mrContext, rAquaGraphics.maTextColor.AsArray() );
-
- // draw the text
- CTLineDraw( mpCTLine, rAquaGraphics.mrContext );
-
- // request an update of the changed window area
+ // request an update of the to-be-changed window area
if( rAquaGraphics.IsWindowGraphics() )
{
const CGRect aInkRect = CTLineGetImageBounds( mpCTLine, rAquaGraphics.mrContext );
@@ -279,6 +273,12 @@ void CTLayout::DrawText( SalGraphics& rGraphics ) const
rAquaGraphics.RefreshRect( aRefreshRect );
}
+ // set the text color as fill color (see kCTForegroundColorFromContextAttributeName)
+ CGContextSetFillColor( rAquaGraphics.mrContext, rAquaGraphics.maTextColor.AsArray() );
+
+ // draw the text
+ CTLineDraw( mpCTLine, rAquaGraphics.mrContext );
+
// restore the original graphic context transformations
CGContextRestoreGState( rAquaGraphics.mrContext );
}
commit 77e79c411fd1961cbdf0b8e07e85a8019b7d7350
Author: Jürgen Schmidt <jsc at apache.org>
Date: Mon Jun 2 10:57:39 2014 +0000
#125003# integrate googletest framework for general use for unit testing
diff --git a/configure.in b/configure.in
index 0df4cf2..b7d1fc3 100644
--- a/configure.in
+++ b/configure.in
@@ -58,6 +58,9 @@ AC_ARG_WITH(system-apache-commons,
AC_ARG_ENABLE(online-update,
[ --disable-online-update Disables the Online Update feature.
],,enable_online_update=yes)
+AC_ARG_ENABLE(unit-tests,
+[ --disable-unit-tests Disables default unit tests (eg. unit tests using Google test, ...).
+],,enable_unit_tests=yes)
AC_ARG_ENABLE(ldap,
[ --disable-ldap Disables the use of LDAP backend via OpenLDAP
],,)
@@ -1446,6 +1449,19 @@ else
fi
AC_SUBST(ENABLE_ONLINE_UPDATE)
+dnl ===================================================================
+dnl Unit Tests
+dnl ===================================================================
+AC_MSG_CHECKING([whether to enable unit tests])
+if test "$enable_unit_tests" = "yes" -o "$enable_unit_tests" = "TRUE"; then
+ ENABLE_UNIT_TESTS="YES"
+ BUILD_TYPE="$BUILD_TYPE GTEST"
+ AC_MSG_RESULT([yes])
+else
+ ENABLE_UNIT_TESTS=""
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST(ENABLE_UNIT_TESTS)
AC_MSG_CHECKING([whether to enable native CUPS support])
if test "$test_cups" = "yes" -a \( "$enable_cups" = "yes" -o "$enable_cups" = "TRUE" \) ; then
diff --git a/external_deps.lst b/external_deps.lst
index 46e3ab2..1f6b6c4 100644
--- a/external_deps.lst
+++ b/external_deps.lst
@@ -41,6 +41,11 @@ if ( true )
URL1 = http://ucpp.googlecode.com/files/ucpp-1.3.2.tar.gz
URL2 = $(OOO_EXTRAS)$(MD5)-$(name)
+if (ENABLE_UNIT_TESTS == YES)
+ MD5 = 2d6ec8ccdf5c46b05ba54a9fd1d130d7
+ name = gtest-1.7.0.zip
+ URL1 = http://googletest.googlecode.com/files/gtest-1.7.0.zip
+
if ( true )
MD5 = 067201ea8b126597670b5eff72e1f66c
name = mythes-1.2.0.tar.gz
diff --git a/sal/prj/build.lst b/sal/prj/build.lst
index ddc6b10..2367c9a 100644
--- a/sal/prj/build.lst
+++ b/sal/prj/build.lst
@@ -1,4 +1,4 @@
-sa sal : xml2cmp stlport external BOOST:boost NULL
+sa sal : xml2cmp stlport external BOOST:boost GTEST:gtest NULL
sa sal usr1 - all sa_mkout NULL
sa sal\inc nmake - all sa_inc NULL
sa sal\typesconfig nmake - u sa_tc sa_inc NULL
@@ -14,6 +14,8 @@ sa sal\qa nmake - all sa_qa sa_util NULL
sa sal\osl\unx nmake - u sa_oslu sa_tc.u sa_inc NULL
sa sal\osl\all nmake - all sa_oslall sa_tc.u sa_inc NULL
sa sal\util nmake - all sa_util sa_tc.u sa_oslall sa_uwinapi.n sa_kill.n sa_onlineupdate.n sa_osln.n sa_oslp.p sa_oslu.u sa_rtl sa_textenc NULL
+sa sal\qa\sal nmake - all sa_qa_sal sa_util NULL
+
sa sal\cppunittester nmake - all sa_cppunittester sa_cpprt.u sa_util NULL
sa sal\qa\ByteSequence nmake - all sa_qa_ByteSequence sa_cppunittester sa_util NULL
sa sal\qa\OStringBuffer nmake - all sa_qa_OStringBuffer sa_cppunittester sa_util NULL
diff --git a/sal/qa/sal/makefile.mk b/sal/qa/sal/makefile.mk
index f7c5bab..c3ae346 100644
--- a/sal/qa/sal/makefile.mk
+++ b/sal/qa/sal/makefile.mk
@@ -20,27 +20,27 @@
#**************************************************************
+PRJ = ..$/..
+PRJNAME = sal
+TARGET = sal_ut_types
-PRJ := ..$/..
-PRJNAME := sal
-TARGET := qa_sal
-
-ENABLE_EXCEPTIONS := TRUE
+ENABLE_EXCEPTIONS = TRUE
.INCLUDE: settings.mk
-SHL1TARGET = $(TARGET)_types
-SHL1OBJS = $(SLO)$/test_types.obj
-SHL1STDLIBS = $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
-SHL1VERSIONMAP = version.map
-SHL1IMPLIB = i$(SHL1TARGET)
-DEF1NAME = $(SHL1TARGET)
+.IF "$(ENABLE_UNIT_TESTS)" != "YES"
+all:
+ @echo unit tests are disabled. Nothing to do.
-SLOFILES = $(SHL1OBJS)
+.ELSE
-.INCLUDE: target.mk
+APP1OBJS = $(OBJ)/test_types.obj
+APP1RPATH = NONE
+APP1STDLIBS = $(GTESTLIB) $(SALLIB)
+APP1TARGET = sal_ut_test
+APP1TEST = enabled
+#APP1TEST = disabled
-ALLTAR: test
+.INCLUDE: target.mk
-test .PHONY: $(SHL1TARGETN)
- testshl2 $(SHL1TARGETN)
+.ENDIF
diff --git a/sal/qa/sal/test_types.cxx b/sal/qa/sal/test_types.cxx
index 4c69e16..7cac015 100644
--- a/sal/qa/sal/test_types.cxx
+++ b/sal/qa/sal/test_types.cxx
@@ -28,9 +28,10 @@
#include <stdio.h> // C99 snprintf not necessarily in <cstdio>
#include <string.h> // wntmsci10 does not know <cstring> std::strcmp
-#include "testshl/simpleheader.hxx"
#include "sal/types.h"
+#include "gtest/gtest.h"
+
namespace {
template< typename T > void testPrintf(
@@ -39,20 +40,11 @@ template< typename T > void testPrintf(
std::size_t const bufsize = 1000;
char buf[bufsize];
int n = snprintf(buf, bufsize, format, argument);
- CPPUNIT_ASSERT(n >= 0 && sal::static_int_cast< unsigned int >(n) < bufsize);
- CPPUNIT_ASSERT(strcmp(buf, result) == 0);
+ ASSERT_TRUE(n >= 0 && sal::static_int_cast< unsigned int >(n) < bufsize);
+ ASSERT_TRUE(strcmp(buf, result) == 0);
}
-class Test: public CppUnit::TestFixture {
-public:
- void test();
-
- CPPUNIT_TEST_SUITE(Test);
- CPPUNIT_TEST(test);
- CPPUNIT_TEST_SUITE_END();
-};
-
-void Test::test() {
+TEST(Sal_Test, Types_Test) {
testPrintf("-2147483648", "%" SAL_PRIdINT32, SAL_MIN_INT32);
testPrintf("4294967295", "%" SAL_PRIuUINT32, SAL_MAX_UINT32);
testPrintf("ffffffff", "%" SAL_PRIxUINT32, SAL_MAX_UINT32);
@@ -70,8 +62,10 @@ void Test::test() {
testPrintf("ABC", "%" SAL_PRIXUINTPTR, static_cast< sal_uIntPtr >(0xabc));
}
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(Test, "alltests");
-
}
-NOADDITIONAL;
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/set_soenv.in b/set_soenv.in
index 80fb9d2..53c931d 100644
--- a/set_soenv.in
+++ b/set_soenv.in
@@ -105,7 +105,7 @@ my ( $oldPATH, $SRC_ROOT, $SO_HOME, $JAVA_HOME, $JDK, $JAVAFLAGS, $OOO_SHELL,
$WIN_GNUCOPY, $WIN_TOUCH, $MOZILLABUILD,
$PROEXT, $TARFILE_LOCATION,
$ENABLE_HUNSPELL, $ENABLE_HYPHEN,
- $SYSTEM_PYTHON, $EPM_FLAGS);
+ $SYSTEM_PYTHON, $EPM_FLAGS, $ENABLE_UNIT_TESTS);
#
#-------------------------------------------
# IId. Declaring the aliases.
@@ -1861,6 +1861,7 @@ ToFile( "SYSTEM_CPPUNIT", "@SYSTEM_CPPUNIT@", "e" );
ToFile( "CPPUNIT_CFLAGS", "@CPPUNIT_CFLAGS@", "e" );
ToFile( "CPPUNIT_LIBS", "@CPPUNIT_LIBS@", "e" );
ToFile( "WITH_CPPUNIT", "@WITH_CPPUNIT@", "e" );
+ToFile( "ENABLE_UNIT_TESTS", "@ENABLE_UNIT_TESTS@", "e" );
ToFile( "SYSTEM_LIBXML", "@SYSTEM_LIBXML@", "e" );
ToFile( "USE_FT_EMBOLDEN", "@USE_FT_EMBOLDEN@", "e" );
ToFile( "LIBXML_CFLAGS", "@LIBXML_CFLAGS@", "e" );
diff --git a/solenv/inc/_tg_app.mk b/solenv/inc/_tg_app.mk
index fbced22..c9295b8 100644
--- a/solenv/inc/_tg_app.mk
+++ b/solenv/inc/_tg_app.mk
@@ -279,6 +279,13 @@ $(APP1TARGETN): $(APP1OBJS) $(APP1LIBS) \
.ENDIF # "$(APP1TARGETN)"!=""
+# New rule for automatic run targets of unit test targets
+.IF "$(APP1TEST)" == "enabled" && "$(APP1TARGET)" != ""
+
+$(APP1TARGET)_run: $(APP1TARGETN)
+ $(COMMAND_ECHO) $(AUGMENT_LIBRARY_PATH) $(APP1TARGETN) --gtest_output="xml:$(BIN)/$(APP1TARGET)_result.xml"
+
+.ENDIF
# Instruction for linking
# unroll begin
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index 9aa27cf..d8d70a9 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -278,6 +278,9 @@ CPPUNITLIB = $(CPPUNIT_LIBS)
.ELSE
CPPUNITLIB = -lcppunit
.ENDIF
+
+GTESTLIB= -lgtest
+
.IF "$(SYSTEM_LIBXSLT)"=="YES"
XSLTLIB=$(LIBXSLT_LIBS)
.ELSE
@@ -294,7 +297,6 @@ REDLANDLIB=$(REDLAND_LIBS)
REDLANDLIB=-lrdf
.ENDIF
-
#
# USED_%NAME%_LIBS
# Variablen, in denen in gueltiger Reihenfolge ALLE Libraries,
@@ -470,6 +472,8 @@ HELPLINKERLIB=ihelplinker.lib
JVMACCESSLIB = ijvmaccess.lib
XSLTLIB = libxslt.lib $(LIBXML2LIB)
CPPUNITLIB = icppunit_dll.lib
+GTESTLIB = igtest.lib
+
REDLANDLIB = librdf.lib
JVMFWKLIB = ijvmfwk.lib
diff --git a/solenv/inc/target.mk b/solenv/inc/target.mk
index 35da3ad..77a334e 100644
--- a/solenv/inc/target.mk
+++ b/solenv/inc/target.mk
@@ -150,6 +150,44 @@ APP8TARGET=
APP9TARGET=
.ENDIF
+APP1RUNTEST=
+APP2RUNTEST=
+APP3RUNTEST=
+APP4RUNTEST=
+APP5RUNTEST=
+APP6RUNTEST=
+APP7RUNTEST=
+APP8RUNTEST=
+APP9RUNTEST=
+
+.IF "$(APP1TEST)"=="enabled"
+APP1RUNTEST=$(APP1TARGET)_run
+.ENDIF
+.IF "$(APP2TEST)"=="enabled"
+APP2RUNTEST=$(APP2TARGET)_run
+.ENDIF
+.IF "$(APP3TEST)"=="enabled"
+APP3RUNTEST=$(APP3TARGET)_run
+.ENDIF
+.IF "$(APP4TEST)"=="enabled"
+APP4RUNTEST=$(APP4TARGET)_run
+.ENDIF
+.IF "$(APP5TEST)"=="enabled"
+APP5RUNTEST=$(APP5TARGET)_run
+.ENDIF
+.IF "$(APP6TEST)"=="enabled"
+APP6RUNTEST=$(APP6TARGET)_run
+.ENDIF
+.IF "$(APP7TEST)"=="enabled"
+APP7RUNTEST=$(APP7TARGET)_run
+.ENDIF
+.IF "$(APP8TEST)"=="enabled"
+APP8RUNTEST=$(APP8TARGET)_run
+.ENDIF
+.IF "$(APP9TEST)"=="enabled"
+APP9RUNTEST=$(APP9TARGET)_run
+.ENDIF
+
.IF "$(IDLFILES)"!=""
URDFILES+=$(foreach,i,$(IDLFILES:s/.idl/.urd/:f) $(OUT)/ucr/$(IDLPACKAGE)/$i)
@@ -1156,6 +1194,9 @@ ALLTAR: \
$(APP1TARGETN) $(APP2TARGETN) $(APP3TARGETN) \
$(APP4TARGETN) $(APP5TARGETN) $(APP6TARGETN) \
$(APP7TARGETN) $(APP8TARGETN) $(APP9TARGETN) \
+ $(APP1RUNTEST) $(APP2RUNTEST) $(APP3RUNTEST) \
+ $(APP4RUNTEST) $(APP5RUNTEST) $(APP6RUNTEST) \
+ $(APP7RUNTEST) $(APP8RUNTEST) $(APP9RUNTEST) \
$(JARTARGETN) \
$(JARTARGETDEPN) \
$(SRC1TARGET) \
diff --git a/solenv/inc/tg_app.mk b/solenv/inc/tg_app.mk
index ad2a50f..7ce4730 100644
--- a/solenv/inc/tg_app.mk
+++ b/solenv/inc/tg_app.mk
@@ -281,6 +281,13 @@ $(APP$(TNR)TARGETN): $(APP$(TNR)OBJS) $(APP$(TNR)LIBS) \
.ENDIF # "$(APP$(TNR)TARGETN)"!=""
+# New rule for automatic run targets of unit test targets
+.IF "$(APP$(TNR)TEST)" == "enabled" && "$(APP$(TNR)TARGET)" != ""
+
+$(APP$(TNR)TARGET)_run: $(APP$(TNR)TARGETN)
+ $(COMMAND_ECHO) $(AUGMENT_LIBRARY_PATH) $(APP$(TNR)TARGETN) --gtest_output="xml:$(BIN)/$(APP$(TNR)TARGET)_result.xml"
+
+.ENDIF
# Instruction for linking
# unroll end
More information about the Libreoffice-commits
mailing list