[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 2 commits - basegfx/test
Damjan Jovanovic
damjan at apache.org
Thu Aug 27 21:08:19 PDT 2015
basegfx/test/basegfx1d.cxx | 30
basegfx/test/basegfx2d.cxx | 1558 ++++++++++++++++------------------------
basegfx/test/basegfx3d.cxx | 138 ---
basegfx/test/basegfxtools.cxx | 61 -
basegfx/test/boxclipper.cxx | 202 ++---
basegfx/test/clipstate.cxx | 95 +-
basegfx/test/export.map | 30
basegfx/test/genericclipper.cxx | 78 --
basegfx/test/main.cxx | 28
basegfx/test/makefile.mk | 30
10 files changed, 898 insertions(+), 1352 deletions(-)
New commits:
commit f6bc2f21fee72a8b9c178ddd431ca3f05594f5e3
Author: Damjan Jovanovic <damjan at apache.org>
Date: Fri Aug 28 04:03:15 2015 +0000
No need for version map file with Google Test.
diff --git a/basegfx/test/export.map b/basegfx/test/export.map
deleted file mode 100644
index ec49c45..0000000
--- a/basegfx/test/export.map
+++ /dev/null
@@ -1,30 +0,0 @@
-#**************************************************************
-#
-# 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.
-#
-#**************************************************************
-
-
-
-UDK_3_0_0 {
- global:
- cppunitTestPlugIn;
-
- local:
- *;
-};
diff --git a/basegfx/test/makefile.mk b/basegfx/test/makefile.mk
index 4d24efd..f85d14a 100644
--- a/basegfx/test/makefile.mk
+++ b/basegfx/test/makefile.mk
@@ -64,7 +64,6 @@ APP1STDLIBS= \
APP1IMPLIB= i$(APP1TARGET)
APP1RPATH = NONE
DEF1NAME =$(APP1TARGET)
-APP1VERSIONMAP = export.map
APP1TEST = enabled
# END ------------------------------------------------------------------
commit 6f473b19e436d6e0f9e212c5913c347c4e0efdb0
Author: Damjan Jovanovic <damjan at apache.org>
Date: Fri Aug 28 03:58:57 2015 +0000
#i125003# migrate main/basegfx from cppunit to Google Test.
diff --git a/basegfx/test/basegfx1d.cxx b/basegfx/test/basegfx1d.cxx
index 01c8a75..fcec8cc 100644
--- a/basegfx/test/basegfx1d.cxx
+++ b/basegfx/test/basegfx1d.cxx
@@ -27,45 +27,23 @@
// autogenerated file with codegen.pl
#include "preextstl.h"
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
-#include "cppunit/plugin/TestPlugIn.h"
+#include "gtest/gtest.h"
#include "postextstl.h"
namespace basegfx1d
{
-class b1drange : public CppUnit::TestFixture
+class b1drange : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
- {
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b1drange);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b1drange
-// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx1d::b1drange);
} // namespace basegfx1d
-
-CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/basegfx/test/basegfx2d.cxx b/basegfx/test/basegfx2d.cxx
index 73a3ba3..f99ede4 100644
--- a/basegfx/test/basegfx2d.cxx
+++ b/basegfx/test/basegfx2d.cxx
@@ -27,9 +27,7 @@
// autogenerated file with codegen.pl
#include "preextstl.h"
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
+#include "gtest/gtest.h"
#include "postextstl.h"
#include <basegfx/matrix/b2dhommatrix.hxx>
@@ -56,9 +54,9 @@ using namespace ::basegfx;
namespace basegfx2d
{
-class b2dsvgdimpex : public CppUnit::TestFixture
+class b2dsvgdimpex : public ::testing::Test
{
-private:
+protected:
::rtl::OUString aPath0;
::rtl::OUString aPath1;
::rtl::OUString aPath2;
@@ -66,7 +64,7 @@ private:
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
// simple rectangle
aPath0 = ::rtl::OUString::createFromAscii(
@@ -140,179 +138,147 @@ public:
"31-24 33-22 34-20 35-18 36-16 37-15 39-12 40-11z" );
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- void impex()
- {
- B2DPolyPolygon aPoly;
- ::rtl::OUString aExport;
-
- CPPUNIT_ASSERT_MESSAGE("importing simple rectangle from SVG-D",
- tools::importFromSvgD( aPoly, aPath0, false, 0 ));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
- const char* sExportString = "m10 10h-20v-20h20z";
- CPPUNIT_ASSERT_MESSAGE("exporting rectangle to SVG-D",
- !aExport.compareToAscii(sExportString) );
- CPPUNIT_ASSERT_MESSAGE("importing simple rectangle from SVG-D (round-trip",
- tools::importFromSvgD( aPoly, aExport, false, 0 ));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
- CPPUNIT_ASSERT_MESSAGE("exporting rectangle to SVG-D (round-trip)",
- !aExport.compareToAscii(sExportString));
-
- CPPUNIT_ASSERT_MESSAGE("importing simple bezier polygon from SVG-D",
- tools::importFromSvgD( aPoly, aPath1, false, 0 ));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
-
- // Adaptions for B2DPolygon bezier change (see #i77162#):
- //
- // The import/export of aPath1 does not reproduce aExport again. This is
- // correct since aPath1 contains a segment with non-used control points
- // which gets exported now correctly as 'l' and also a point (#4, index 3)
- // with C2 continuity which produces a 's' staement now.
- //
- // The old SVGexport identified nun-used ControlVectors erraneously as bezier segments
- // because the 2nd vector at the start point was used, even when added
- // with start point was identical to end point. Exactly for that reason
- // i reworked the B2DPolygon to use prev, next control points.
- //
- // so for correct unit test i add the new exported string here as sExportStringSimpleBezier
- // and compare to it.
- const char* sExportStringSimpleBezier =
- "m11430 0c-8890 3810 5715 6985 5715 6985"
- "l-17145-1905c0 0 22860-10160 16510 6350"
- "s-3810-11430-3810-11430z";
- CPPUNIT_ASSERT_MESSAGE("exporting bezier polygon to SVG-D", !aExport.compareToAscii(sExportStringSimpleBezier));
-
- // Adaptions for B2DPolygon bezier change (see #i77162#):
- //
- // a 2nd good test is that re-importing of aExport has to create the same
- // B2DPolPolygon again:
- B2DPolyPolygon aReImport;
- CPPUNIT_ASSERT_MESSAGE("importing simple bezier polygon from SVG-D", tools::importFromSvgD( aReImport, aExport, false, 0));
- CPPUNIT_ASSERT_MESSAGE("re-imported polygon needs to be identical", aReImport == aPoly);
-
- CPPUNIT_ASSERT_MESSAGE("importing '@' from SVG-D", tools::importFromSvgD( aPoly, aPath2, false, 0));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
-
- // Adaptions for B2DPolygon bezier change (see #i77162#):
- //
- // same here, the corrected export with the corrected B2DPolygon is simply more efficient,
- // so i needed to change the compare string. Also adding the re-import comparison below.
- const char* sExportString1 =
- "m1917 1114c-89-189-233-284-430-284-167 0-306 91-419 273s-170 370-17"
- "0 564c0 145 33 259 98 342 65 84 150 126 257 126q115.5 0 231-57s147-97 210-176 99-143 109-190c38-199 76-398 114"
- "-598zm840 1646c-133 73-312 139-537 197-225 57-440 86-644 87-483-1-866-132-1150-392-284-261-426-619-426-1076 0-"
- "292 67-560 200-803s321-433 562-569 514-204 821-204c405 0 739 125 1003 374 264 250 396 550 396 899 0 313-88 576"
- "-265 787q-265.5 318-627 318c-191 0-308-94-352-281-133 187-315 281-546 281-172 0-315-67-428-200s-170-301-170-50"
- "5c0-277 90-527 271-751 181-223 394-335 640-335 196 0 353 83 470 250 13-68 26-136 41-204q144 0 288 0c-74 376-14"
- "8 752-224 1128-21 101-31 183-31 245 0 39 9 70 26 93 17 24 39 36 67 36 145 0 279-80 400-240s182-365 182-615c0-2"
- "88-107-533-322-734s-487-301-816-301c-395 0-715 124-960 373s-368 569-368 958q0 577.5 357 900c237 216 557 324 95"
- "8 325 189-1 389-27 600-77 211-52 378-110 503-174q40.5 105 81 210z";
- CPPUNIT_ASSERT_MESSAGE("re-importing '@' from SVG-D", tools::importFromSvgD( aReImport, aExport, false, 0));
- CPPUNIT_ASSERT_MESSAGE("re-imported '@' needs to be identical", aReImport == aPoly);
-
- CPPUNIT_ASSERT_MESSAGE("exporting '@' to SVG-D", !aExport.compareToAscii(sExportString1));
- CPPUNIT_ASSERT_MESSAGE("importing '@' from SVG-D (round-trip",
- tools::importFromSvgD( aPoly, aExport, false, 0 ));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
- CPPUNIT_ASSERT_MESSAGE("exporting '@' to SVG-D (round-trip)",
- !aExport.compareToAscii(sExportString1));
-
-
- CPPUNIT_ASSERT_MESSAGE("importing complex polygon from SVG-D",
- tools::importFromSvgD( aPoly, aPath3, false, 0 ));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
- const char* sExportString2 =
- "m1598 125h306v2334h-306v-1105h-1293v1105h-305v-2334h305v973h1293"
- "zm2159 1015 78-44 85 235-91 47-91 40-90 34-90 29-89 21-88 16-88 10-88 3-102-4-97"
- "-12-91-19-85-26-40-16-39-18-38-20-36-22-34-24-33-26-32-27-30-30-29-31-27-33-25-3"
- "3-23-36-21-36-19-38-18-40-16-40-26-86-18-91-11-97-4-103 3-98 11-94 17-89 24-84 3"
- "1-79 37-75 22-35 23-34 24-33 27-32 28-30 29-28 31-27 31-24 33-22 34-21 35-18 37-"
- "17 38-14 38-13 41-11 41-8 86-12 91-4 82 4 78 10 37 9 37 9 36 12 35 14 33 15 33 1"
- "7 32 19 31 21 30 22 30 25 55 54 26 29 24 31 22 32 21 33 19 34 18 36 30 74 23 80 "
- "17 84 10 89 3 94v78h-1277l6 75 10 70 14 66 19 62 23 57 13 26 14 26 15 25 17 23 1"
- "7 22 19 21 19 20 21 18 21 18 23 16 23 14 24 14 26 12 26 11 27 10 28 8 59 13 63 7"
- " 67 3 80-3 81-9 79-14 80-21 78-26 79-32zm-1049-808-12 53h963l-7-51-11-49-14-46-1"
- "7-43-21-40-24-38-27-36-31-32-33-29-35-25-37-22-38-17-40-14-41-9-42-6-44-2-48 2-4"
- "6 6-44 9-42 13-40 17-38 21-36 24-34 28-32 32-29 34-26 38-23 41-20 44-17 47zm1648"
- "-1293h288v2459h-288zm752-2459h288v2459h-288zm1286-1750 86-11 91-4 91 4 85 12 42 "
- "8 39 11 39 13 38 14 36 17 35 18 34 20 33 23 31 24 30 26 29 28 28 30 26 32 25 33 "
- "23 34 21 35 37 75 31 80 24 84 16 90 11 94 3 100-3 100-11 95-16 89-24 85-31 80-37"
- " 74-21 35-23 35-25 32-26 32-28 30-29 28-30 26-31 24-33 22-34 21-35 18-36 17-38 1"
- "4-39 13-39 10-42 9-85 12-91 4-91-4-86-12-41-9-40-10-39-13-37-14-36-17-35-18-34-2"
- "1-33-22-31-24-30-26-29-28-28-30-26-32-25-32-23-35-21-35-38-74-30-80-24-85-17-89-"
- "11-95-3-100 3-101 11-95 17-90 24-85 30-79 38-75 21-35 23-35 25-32 26-32 28-30 29"
- "-28 30-26 31-24 33-22 34-20 35-18 36-16 37-15 39-12 40-11z";
- CPPUNIT_ASSERT_MESSAGE("exporting complex polygon to SVG-D",
- !aExport.compareToAscii(sExportString2));
- CPPUNIT_ASSERT_MESSAGE("importing complex polygon from SVG-D (round-trip",
- tools::importFromSvgD( aPoly, aExport, false, 0 ));
- aExport = tools::exportToSvgD( aPoly, true, true, false );
- CPPUNIT_ASSERT_MESSAGE("exporting complex polygon to SVG-D (round-trip)",
- !aExport.compareToAscii(sExportString2));
-
- const B2DPolygon aRect(
- tools::createPolygonFromRect( B2DRange(0.0,0.0,4000.0,4000.0) ));
- aExport = tools::exportToSvgD( B2DPolyPolygon(aRect), false, false, false );
-
- const char* sExportStringRect = "M0 0H4000V4000H0Z";
- CPPUNIT_ASSERT_MESSAGE("exporting to rectangle svg-d string",
- !aExport.compareToAscii(sExportStringRect));
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dsvgdimpex);
- CPPUNIT_TEST(impex);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dsvgdimpex
-class b2dpolyrange : public CppUnit::TestFixture
+TEST_F(b2dsvgdimpex,impex)
+{
+ B2DPolyPolygon aPoly;
+ ::rtl::OUString aExport;
+
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aPath0, false, 0 )) << "importing simple rectangle from SVG-D";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+ const char* sExportString = "m10 10h-20v-20h20z";
+ ASSERT_TRUE(!aExport.compareToAscii(sExportString) ) << "exporting rectangle to SVG-D";
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aExport, false, 0 )) << "importing simple rectangle from SVG-D (round-trip";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+ ASSERT_TRUE(!aExport.compareToAscii(sExportString)) << "exporting rectangle to SVG-D (round-trip)";
+
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aPath1, false, 0 )) << "importing simple bezier polygon from SVG-D";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+
+ // Adaptions for B2DPolygon bezier change (see #i77162#):
+ //
+ // The import/export of aPath1 does not reproduce aExport again. This is
+ // correct since aPath1 contains a segment with non-used control points
+ // which gets exported now correctly as 'l' and also a point (#4, index 3)
+ // with C2 continuity which produces a 's' staement now.
+ //
+ // The old SVGexport identified nun-used ControlVectors erraneously as bezier segments
+ // because the 2nd vector at the start point was used, even when added
+ // with start point was identical to end point. Exactly for that reason
+ // i reworked the B2DPolygon to use prev, next control points.
+ //
+ // so for correct unit test i add the new exported string here as sExportStringSimpleBezier
+ // and compare to it.
+ const char* sExportStringSimpleBezier =
+ "m11430 0c-8890 3810 5715 6985 5715 6985"
+ "l-17145-1905c0 0 22860-10160 16510 6350"
+ "s-3810-11430-3810-11430z";
+ ASSERT_TRUE(!aExport.compareToAscii(sExportStringSimpleBezier)) << "exporting bezier polygon to SVG-D";
+
+ // Adaptions for B2DPolygon bezier change (see #i77162#):
+ //
+ // a 2nd good test is that re-importing of aExport has to create the same
+ // B2DPolPolygon again:
+ B2DPolyPolygon aReImport;
+ ASSERT_TRUE(tools::importFromSvgD( aReImport, aExport, false, 0)) << "importing simple bezier polygon from SVG-D";
+ ASSERT_TRUE(aReImport == aPoly) << "re-imported polygon needs to be identical";
+
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aPath2, false, 0)) << "importing '@' from SVG-D";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+
+ // Adaptions for B2DPolygon bezier change (see #i77162#):
+ //
+ // same here, the corrected export with the corrected B2DPolygon is simply more efficient,
+ // so i needed to change the compare string. Also adding the re-import comparison below.
+ const char* sExportString1 =
+ "m1917 1114c-89-189-233-284-430-284-167 0-306 91-419 273s-170 370-17"
+ "0 564c0 145 33 259 98 342 65 84 150 126 257 126q115.5 0 231-57s147-97 210-176 99-143 109-190c38-199 76-398 114"
+ "-598zm840 1646c-133 73-312 139-537 197-225 57-440 86-644 87-483-1-866-132-1150-392-284-261-426-619-426-1076 0-"
+ "292 67-560 200-803s321-433 562-569 514-204 821-204c405 0 739 125 1003 374 264 250 396 550 396 899 0 313-88 576"
+ "-265 787q-265.5 318-627 318c-191 0-308-94-352-281-133 187-315 281-546 281-172 0-315-67-428-200s-170-301-170-50"
+ "5c0-277 90-527 271-751 181-223 394-335 640-335 196 0 353 83 470 250 13-68 26-136 41-204q144 0 288 0c-74 376-14"
+ "8 752-224 1128-21 101-31 183-31 245 0 39 9 70 26 93 17 24 39 36 67 36 145 0 279-80 400-240s182-365 182-615c0-2"
+ "88-107-533-322-734s-487-301-816-301c-395 0-715 124-960 373s-368 569-368 958q0 577.5 357 900c237 216 557 324 95"
+ "8 325 189-1 389-27 600-77 211-52 378-110 503-174q40.5 105 81 210z";
+ ASSERT_TRUE(tools::importFromSvgD( aReImport, aExport, false, 0)) << "re-importing '@' from SVG-D";
+ ASSERT_TRUE(aReImport == aPoly) << "re-imported '@' needs to be identical";
+
+ ASSERT_TRUE(!aExport.compareToAscii(sExportString1)) << "exporting '@' to SVG-D";
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aExport, false, 0 )) << "importing '@' from SVG-D (round-trip)";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+ ASSERT_TRUE(!aExport.compareToAscii(sExportString1)) << "exporting '@' to SVG-D (round-trip)";
+
+
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aPath3, false, 0 )) << "importing complex polygon from SVG-D";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+ const char* sExportString2 =
+ "m1598 125h306v2334h-306v-1105h-1293v1105h-305v-2334h305v973h1293"
+ "zm2159 1015 78-44 85 235-91 47-91 40-90 34-90 29-89 21-88 16-88 10-88 3-102-4-97"
+ "-12-91-19-85-26-40-16-39-18-38-20-36-22-34-24-33-26-32-27-30-30-29-31-27-33-25-3"
+ "3-23-36-21-36-19-38-18-40-16-40-26-86-18-91-11-97-4-103 3-98 11-94 17-89 24-84 3"
+ "1-79 37-75 22-35 23-34 24-33 27-32 28-30 29-28 31-27 31-24 33-22 34-21 35-18 37-"
+ "17 38-14 38-13 41-11 41-8 86-12 91-4 82 4 78 10 37 9 37 9 36 12 35 14 33 15 33 1"
+ "7 32 19 31 21 30 22 30 25 55 54 26 29 24 31 22 32 21 33 19 34 18 36 30 74 23 80 "
+ "17 84 10 89 3 94v78h-1277l6 75 10 70 14 66 19 62 23 57 13 26 14 26 15 25 17 23 1"
+ "7 22 19 21 19 20 21 18 21 18 23 16 23 14 24 14 26 12 26 11 27 10 28 8 59 13 63 7"
+ " 67 3 80-3 81-9 79-14 80-21 78-26 79-32zm-1049-808-12 53h963l-7-51-11-49-14-46-1"
+ "7-43-21-40-24-38-27-36-31-32-33-29-35-25-37-22-38-17-40-14-41-9-42-6-44-2-48 2-4"
+ "6 6-44 9-42 13-40 17-38 21-36 24-34 28-32 32-29 34-26 38-23 41-20 44-17 47zm1648"
+ "-1293h288v2459h-288zm752-2459h288v2459h-288zm1286-1750 86-11 91-4 91 4 85 12 42 "
+ "8 39 11 39 13 38 14 36 17 35 18 34 20 33 23 31 24 30 26 29 28 28 30 26 32 25 33 "
+ "23 34 21 35 37 75 31 80 24 84 16 90 11 94 3 100-3 100-11 95-16 89-24 85-31 80-37"
+ " 74-21 35-23 35-25 32-26 32-28 30-29 28-30 26-31 24-33 22-34 21-35 18-36 17-38 1"
+ "4-39 13-39 10-42 9-85 12-91 4-91-4-86-12-41-9-40-10-39-13-37-14-36-17-35-18-34-2"
+ "1-33-22-31-24-30-26-29-28-28-30-26-32-25-32-23-35-21-35-38-74-30-80-24-85-17-89-"
+ "11-95-3-100 3-101 11-95 17-90 24-85 30-79 38-75 21-35 23-35 25-32 26-32 28-30 29"
+ "-28 30-26 31-24 33-22 34-20 35-18 36-16 37-15 39-12 40-11z";
+ ASSERT_TRUE(!aExport.compareToAscii(sExportString2)) << "exporting complex polygon to SVG-D";
+ ASSERT_TRUE(tools::importFromSvgD( aPoly, aExport, false, 0 )) << "importing complex polygon from SVG-D (round-trip)";
+ aExport = tools::exportToSvgD( aPoly, true, true, false );
+ ASSERT_TRUE(!aExport.compareToAscii(sExportString2)) << "exporting complex polygon to SVG-D (round-trip)";
+
+ const B2DPolygon aRect(
+ tools::createPolygonFromRect( B2DRange(0.0,0.0,4000.0,4000.0) ));
+ aExport = tools::exportToSvgD( B2DPolyPolygon(aRect), false, false, false );
+
+ const char* sExportStringRect = "M0 0H4000V4000H0Z";
+ ASSERT_TRUE(!aExport.compareToAscii(sExportStringRect)) << "exporting to rectangle svg-d string";
+}
+
+class b2dpolyrange : public ::testing::Test
{
-private:
public:
- void setUp()
+ virtual void SetUp()
{}
- void tearDown()
+ virtual void TearDown()
{}
+};
- void check()
- {
- B2DPolyRange aRange;
- aRange.appendElement(B2DRange(0,0,1,1),ORIENTATION_POSITIVE);
- aRange.appendElement(B2DRange(2,2,3,3),ORIENTATION_POSITIVE);
-
- CPPUNIT_ASSERT_MESSAGE("simple poly range - count",
- aRange.count() == 2);
- CPPUNIT_ASSERT_MESSAGE("simple poly range - first element",
- aRange.getElement(0).head == B2DRange(0,0,1,1));
- CPPUNIT_ASSERT_MESSAGE("simple poly range - second element",
- aRange.getElement(1).head == B2DRange(2,2,3,3));
-
- // B2DPolyRange relies on correctly orientated rects
- const B2DRange aRect(0,0,1,1);
- CPPUNIT_ASSERT_MESSAGE("createPolygonFromRect - correct orientation",
- tools::getOrientation(
- tools::createPolygonFromRect(aRect)) == ORIENTATION_POSITIVE );
- }
+TEST_F(b2dpolyrange, check)
+{
+ B2DPolyRange aRange;
+ aRange.appendElement(B2DRange(0,0,1,1),ORIENTATION_POSITIVE);
+ aRange.appendElement(B2DRange(2,2,3,3),ORIENTATION_POSITIVE);
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
+ ASSERT_TRUE(aRange.count() == 2) << "simple poly range - count";
+ ASSERT_TRUE(aRange.getElement(0).head == B2DRange(0,0,1,1)) << "simple poly range - first element";
+ ASSERT_TRUE(aRange.getElement(1).head == B2DRange(2,2,3,3)) << "simple poly range - second element";
+
+ // B2DPolyRange relies on correctly orientated rects
+ const B2DRange aRect(0,0,1,1);
+ ASSERT_TRUE(tools::getOrientation(tools::createPolygonFromRect(aRect)) == ORIENTATION_POSITIVE ) <<
+ "createPolygonFromRect - correct orientation";
+}
- CPPUNIT_TEST_SUITE(b2dpolyrange);
- CPPUNIT_TEST(check);
- CPPUNIT_TEST_SUITE_END();
-};
-class b2dbeziertools : public CppUnit::TestFixture
+class b2dbeziertools : public ::testing::Test
{
-private:
+protected:
B2DCubicBezier aHalfCircle; // not exactly, but a look-alike
B2DCubicBezier aQuarterCircle; // not exactly, but a look-alike
B2DCubicBezier aLoop; // identical endpoints, curve goes back to where it started
@@ -326,7 +292,7 @@ private:
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
const B2DPoint a00(0.0, 0.0);
const B2DPoint a10(1.0, 0.0);
@@ -430,149 +396,125 @@ public:
}
}
- void tearDown()
+ virtual void TearDown()
{
}
+}; // class b2dbeziertools
- void adaptiveByDistance()
- {
- ::std::ofstream output("bez_adaptiveByDistance.gnuplot");
- DebugPlotter aPlotter( "distance-adaptive subdivision",
- output );
-
- const double fBound( 0.0001 );
- B2DPolygon result;
+TEST_F(b2dbeziertools, adaptiveByDistance)
+{
+ ::std::ofstream output("bez_adaptiveByDistance.gnuplot");
+ DebugPlotter aPlotter( "distance-adaptive subdivision",
+ output );
- aHalfCircle.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "half circle"); result.clear();
+ const double fBound( 0.0001 );
+ B2DPolygon result;
- aQuarterCircle.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "quarter circle"); result.clear();
+ aHalfCircle.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "half circle"); result.clear();
- aLoop.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "loop"); result.clear();
+ aQuarterCircle.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "quarter circle"); result.clear();
- aStraightLineDistinctEndPoints.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "straight line 0"); result.clear();
+ aLoop.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "loop"); result.clear();
- aStraightLineDistinctEndPoints2.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "straight line 1"); result.clear();
+ aStraightLineDistinctEndPoints.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "straight line 0"); result.clear();
- aStraightLineIdenticalEndPoints.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "straight line 2"); result.clear();
+ aStraightLineDistinctEndPoints2.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "straight line 1"); result.clear();
- aStraightLineIdenticalEndPoints2.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "straight line 3"); result.clear();
+ aStraightLineIdenticalEndPoints.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "straight line 2"); result.clear();
- aCrossing.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "straight line 4"); result.clear();
+ aStraightLineIdenticalEndPoints2.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "straight line 3"); result.clear();
- aCusp.adaptiveSubdivideByDistance(result, fBound);
- aPlotter.plot(result,
- "straight line 5"); result.clear();
+ aCrossing.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "straight line 4"); result.clear();
- CPPUNIT_ASSERT_MESSAGE("adaptiveByDistance", true );
- }
+ aCusp.adaptiveSubdivideByDistance(result, fBound);
+ aPlotter.plot(result,
+ "straight line 5"); result.clear();
- void adaptiveByAngle()
- {
- const double fBound( 5.0 );
- B2DPolygon result;
+ ASSERT_TRUE( true ) << "adaptiveByDistance";
+}
- ::std::ofstream output("bez_adaptiveByAngle.gnuplot");
- DebugPlotter aPlotter( "angle-adaptive subdivision",
- output );
-
- aHalfCircle.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "half circle"); result.clear();
+TEST_F(b2dbeziertools, adaptiveByAngle)
+{
+ const double fBound( 5.0 );
+ B2DPolygon result;
- aQuarterCircle.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "quarter cirle"); result.clear();
+ ::std::ofstream output("bez_adaptiveByAngle.gnuplot");
+ DebugPlotter aPlotter( "angle-adaptive subdivision",
+ output );
- aLoop.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "loop"); result.clear();
+ aHalfCircle.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "half circle"); result.clear();
- aStraightLineDistinctEndPoints.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "straight line 0"); result.clear();
+ aQuarterCircle.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "quarter cirle"); result.clear();
- aStraightLineDistinctEndPoints2.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "straight line 1"); result.clear();
+ aLoop.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "loop"); result.clear();
- aStraightLineIdenticalEndPoints.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "straight line 2"); result.clear();
+ aStraightLineDistinctEndPoints.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "straight line 0"); result.clear();
- aStraightLineIdenticalEndPoints2.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "straight line 3"); result.clear();
+ aStraightLineDistinctEndPoints2.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "straight line 1"); result.clear();
- aCrossing.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "straight line 4"); result.clear();
+ aStraightLineIdenticalEndPoints.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "straight line 2"); result.clear();
- aCusp.adaptiveSubdivideByAngle(result, fBound, true);
- aPlotter.plot(result,
- "straight line 5"); result.clear();
+ aStraightLineIdenticalEndPoints2.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "straight line 3"); result.clear();
- CPPUNIT_ASSERT_MESSAGE("adaptiveByAngle", true );
- }
+ aCrossing.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "straight line 4"); result.clear();
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
+ aCusp.adaptiveSubdivideByAngle(result, fBound, true);
+ aPlotter.plot(result,
+ "straight line 5"); result.clear();
- CPPUNIT_TEST_SUITE(b2dbeziertools);
- CPPUNIT_TEST(adaptiveByDistance); // TODO: add tests for quadratic bezier (subdivide and degree reduction)
- CPPUNIT_TEST(adaptiveByAngle);
- CPPUNIT_TEST_SUITE_END();
-}; // class b2dcubicbezier
+ ASSERT_TRUE( true ) << "adaptiveByAngle";
+}
-class b2dcubicbezier : public CppUnit::TestFixture
+class b2dcubicbezier : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- void EmptyMethod()
- {
- // this is demonstration code
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dcubicbezier);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dcubicbezier
-class b2dhommatrix : public CppUnit::TestFixture
+class b2dhommatrix : public ::testing::Test
{
-private:
+protected:
B2DHomMatrix maIdentity;
B2DHomMatrix maScale;
B2DHomMatrix maTranslate;
@@ -582,7 +524,7 @@ private:
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
// setup some test matrices
maIdentity.identity(); // force compact layout
@@ -625,162 +567,10 @@ public:
maPerspective.set(2,2, 9.0);
}
- void tearDown()
+ virtual void TearDown()
{
}
- void equal()
- {
- B2DHomMatrix aIdentity;
- B2DHomMatrix aScale;
- B2DHomMatrix aTranslate;
- B2DHomMatrix aShear;
- B2DHomMatrix aAffine;
- B2DHomMatrix aPerspective;
-
- // setup some test matrices
- aIdentity.identity(); // force compact layout
- aIdentity.set(0,0, 1.0);
- aIdentity.set(0,1, 0.0);
- aIdentity.set(0,2, 0.0);
- aIdentity.set(1,0, 0.0);
- aIdentity.set(1,1, 1.0);
- aIdentity.set(1,2, 0.0);
-
- aScale.identity(); // force compact layout
- aScale.set(0,0, 2.0);
- aScale.set(1,1, 20.0);
-
- aTranslate.identity(); // force compact layout
- aTranslate.set(0,2, 20.0);
- aTranslate.set(1,2, 2.0);
-
- aShear.identity(); // force compact layout
- aShear.set(0,1, 3.0);
- aShear.set(1,0, 7.0);
- aShear.set(1,1, 22.0);
-
- aAffine.identity(); // force compact layout
- aAffine.set(0,0, 1.0);
- aAffine.set(0,1, 2.0);
- aAffine.set(0,2, 3.0);
- aAffine.set(1,0, 4.0);
- aAffine.set(1,1, 5.0);
- aAffine.set(1,2, 6.0);
-
- aPerspective.set(0,0, 1.0);
- aPerspective.set(0,1, 2.0);
- aPerspective.set(0,2, 3.0);
- aPerspective.set(1,0, 4.0);
- aPerspective.set(1,1, 5.0);
- aPerspective.set(1,2, 6.0);
- aPerspective.set(2,0, 7.0);
- aPerspective.set(2,1, 8.0);
- aPerspective.set(2,2, 9.0);
-
- CPPUNIT_ASSERT_MESSAGE("operator==: identity matrix", aIdentity == maIdentity);
- CPPUNIT_ASSERT_MESSAGE("operator==: scale matrix", aScale == maScale);
- CPPUNIT_ASSERT_MESSAGE("operator==: translate matrix", aTranslate == maTranslate);
- CPPUNIT_ASSERT_MESSAGE("operator==: shear matrix", aShear == maShear);
- CPPUNIT_ASSERT_MESSAGE("operator==: affine matrix", aAffine == maAffine);
- CPPUNIT_ASSERT_MESSAGE("operator==: perspective matrix", aPerspective == maPerspective);
- }
-
- void identity()
- {
- B2DHomMatrix ident;
-
- CPPUNIT_ASSERT_MESSAGE("identity", maIdentity == ident);
- }
-
- void scale()
- {
- B2DHomMatrix mat;
- mat.scale(2.0,20.0);
- CPPUNIT_ASSERT_MESSAGE("scale", maScale == mat);
- }
-
- void translate()
- {
- B2DHomMatrix mat;
- mat.translate(20.0,2.0);
- CPPUNIT_ASSERT_MESSAGE("translate", maTranslate == mat);
- }
-
- void shear()
- {
- B2DHomMatrix mat;
- mat.shearX(3.0);
- mat.shearY(7.0);
- CPPUNIT_ASSERT_MESSAGE("translate", maShear == mat);
- }
-
- void multiply()
- {
- B2DHomMatrix affineAffineProd;
-
- affineAffineProd.set(0,0, 9);
- affineAffineProd.set(0,1, 12);
- affineAffineProd.set(0,2, 18);
- affineAffineProd.set(1,0, 24);
- affineAffineProd.set(1,1, 33);
- affineAffineProd.set(1,2, 48);
-
- B2DHomMatrix affinePerspectiveProd;
-
- affinePerspectiveProd.set(0,0, 30);
- affinePerspectiveProd.set(0,1, 36);
- affinePerspectiveProd.set(0,2, 42);
- affinePerspectiveProd.set(1,0, 66);
- affinePerspectiveProd.set(1,1, 81);
- affinePerspectiveProd.set(1,2, 96);
- affinePerspectiveProd.set(2,0, 7);
- affinePerspectiveProd.set(2,1, 8);
- affinePerspectiveProd.set(2,2, 9);
-
- B2DHomMatrix perspectiveAffineProd;
-
- perspectiveAffineProd.set(0,0, 9);
- perspectiveAffineProd.set(0,1, 12);
- perspectiveAffineProd.set(0,2, 18);
- perspectiveAffineProd.set(1,0, 24);
- perspectiveAffineProd.set(1,1, 33);
- perspectiveAffineProd.set(1,2, 48);
- perspectiveAffineProd.set(2,0, 39);
- perspectiveAffineProd.set(2,1, 54);
- perspectiveAffineProd.set(2,2, 78);
-
- B2DHomMatrix perspectivePerspectiveProd;
-
- perspectivePerspectiveProd.set(0,0, 30);
- perspectivePerspectiveProd.set(0,1, 36);
- perspectivePerspectiveProd.set(0,2, 42);
- perspectivePerspectiveProd.set(1,0, 66);
- perspectivePerspectiveProd.set(1,1, 81);
- perspectivePerspectiveProd.set(1,2, 96);
- perspectivePerspectiveProd.set(2,0, 102);
- perspectivePerspectiveProd.set(2,1, 126);
- perspectivePerspectiveProd.set(2,2, 150);
-
- B2DHomMatrix temp;
-
- temp = maAffine;
- temp*=maAffine;
- CPPUNIT_ASSERT_MESSAGE("multiply: both compact", temp == affineAffineProd);
-
- temp = maPerspective;
- temp*=maAffine;
- CPPUNIT_ASSERT_MESSAGE("multiply: first compact", temp == affinePerspectiveProd);
-
- temp = maAffine;
- temp*=maPerspective;
- CPPUNIT_ASSERT_MESSAGE("multiply: second compact", temp == perspectiveAffineProd);
-
- temp = maPerspective;
- temp*=maPerspective;
- CPPUNIT_ASSERT_MESSAGE("multiply: none compact", temp == perspectivePerspectiveProd);
- }
-
void impFillMatrix(B2DHomMatrix& rSource, double fScaleX, double fScaleY, double fShearX, double fRotate)
{
// fill rSource with a linear combination of scale, shear and rotate
@@ -810,450 +600,448 @@ public:
// if decomposition worked, matrices need to be the same
return bWorked && aSource == aRecombined;
}
+}; // class b2dhommatrix
- void decompose()
- {
- // test matrix decompositions. Each matrix decomposed and rebuilt
- // using the decompose result should be the same as before. Test
- // with all ranges of values. Translations are not tested since these
- // are just the two rightmost values and uncritical
- static double fSX(10.0);
- static double fSY(12.0);
- static double fR(45.0 * F_PI180);
- static double fS(15.0 * F_PI180);
-
- // check all possible scaling combinations
- CPPUNIT_ASSERT_MESSAGE("decompose: error test A1", impDecomposeComposeTest(fSX, fSY, 0.0, 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test A2", impDecomposeComposeTest(-fSX, fSY, 0.0, 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test A3", impDecomposeComposeTest(fSX, -fSY, 0.0, 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test A4", impDecomposeComposeTest(-fSX, -fSY, 0.0, 0.0));
-
- // check all possible scaling combinations with positive rotation
- CPPUNIT_ASSERT_MESSAGE("decompose: error test B1", impDecomposeComposeTest(fSX, fSY, 0.0, fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test B2", impDecomposeComposeTest(-fSX, fSY, 0.0, fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test B3", impDecomposeComposeTest(fSX, -fSY, 0.0, fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test B4", impDecomposeComposeTest(-fSX, -fSY, 0.0, fR));
-
- // check all possible scaling combinations with negative rotation
- CPPUNIT_ASSERT_MESSAGE("decompose: error test C1", impDecomposeComposeTest(fSX, fSY, 0.0, -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test C2", impDecomposeComposeTest(-fSX, fSY, 0.0, -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test C3", impDecomposeComposeTest(fSX, -fSY, 0.0, -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test C4", impDecomposeComposeTest(-fSX, -fSY, 0.0, -fR));
-
- // check all possible scaling combinations with positive shear
- CPPUNIT_ASSERT_MESSAGE("decompose: error test D1", impDecomposeComposeTest(fSX, fSY, tan(fS), 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test D2", impDecomposeComposeTest(-fSX, fSY, tan(fS), 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test D3", impDecomposeComposeTest(fSX, -fSY, tan(fS), 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test D4", impDecomposeComposeTest(-fSX, -fSY, tan(fS), 0.0));
-
- // check all possible scaling combinations with negative shear
- CPPUNIT_ASSERT_MESSAGE("decompose: error test E1", impDecomposeComposeTest(fSX, fSY, tan(-fS), 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test E2", impDecomposeComposeTest(-fSX, fSY, tan(-fS), 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test E3", impDecomposeComposeTest(fSX, -fSY, tan(-fS), 0.0));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test E4", impDecomposeComposeTest(-fSX, -fSY, tan(-fS), 0.0));
-
- // check all possible scaling combinations with positive rotate and positive shear
- CPPUNIT_ASSERT_MESSAGE("decompose: error test F1", impDecomposeComposeTest(fSX, fSY, tan(fS), fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test F2", impDecomposeComposeTest(-fSX, fSY, tan(fS), fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test F3", impDecomposeComposeTest(fSX, -fSY, tan(fS), fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test F4", impDecomposeComposeTest(-fSX, -fSY, tan(fS), fR));
-
- // check all possible scaling combinations with negative rotate and positive shear
- CPPUNIT_ASSERT_MESSAGE("decompose: error test G1", impDecomposeComposeTest(fSX, fSY, tan(fS), -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test G2", impDecomposeComposeTest(-fSX, fSY, tan(fS), -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test G3", impDecomposeComposeTest(fSX, -fSY, tan(fS), -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test G4", impDecomposeComposeTest(-fSX, -fSY, tan(fS), -fR));
-
- // check all possible scaling combinations with positive rotate and negative shear
- CPPUNIT_ASSERT_MESSAGE("decompose: error test H1", impDecomposeComposeTest(fSX, fSY, tan(-fS), fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test H2", impDecomposeComposeTest(-fSX, fSY, tan(-fS), fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test H3", impDecomposeComposeTest(fSX, -fSY, tan(-fS), fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test H4", impDecomposeComposeTest(-fSX, -fSY, tan(-fS), fR));
-
- // check all possible scaling combinations with negative rotate and negative shear
- CPPUNIT_ASSERT_MESSAGE("decompose: error test I1", impDecomposeComposeTest(fSX, fSY, tan(-fS), -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test I2", impDecomposeComposeTest(-fSX, fSY, tan(-fS), -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test I3", impDecomposeComposeTest(fSX, -fSY, tan(-fS), -fR));
- CPPUNIT_ASSERT_MESSAGE("decompose: error test I4", impDecomposeComposeTest(-fSX, -fSY, tan(-fS), -fR));
- }
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
+TEST_F(b2dhommatrix, equal)
+{
+ B2DHomMatrix aIdentity;
+ B2DHomMatrix aScale;
+ B2DHomMatrix aTranslate;
+ B2DHomMatrix aShear;
+ B2DHomMatrix aAffine;
+ B2DHomMatrix aPerspective;
+
+ // setup some test matrices
+ aIdentity.identity(); // force compact layout
+ aIdentity.set(0,0, 1.0);
+ aIdentity.set(0,1, 0.0);
+ aIdentity.set(0,2, 0.0);
+ aIdentity.set(1,0, 0.0);
+ aIdentity.set(1,1, 1.0);
+ aIdentity.set(1,2, 0.0);
+
+ aScale.identity(); // force compact layout
+ aScale.set(0,0, 2.0);
+ aScale.set(1,1, 20.0);
+
+ aTranslate.identity(); // force compact layout
+ aTranslate.set(0,2, 20.0);
+ aTranslate.set(1,2, 2.0);
+
+ aShear.identity(); // force compact layout
+ aShear.set(0,1, 3.0);
+ aShear.set(1,0, 7.0);
+ aShear.set(1,1, 22.0);
+
+ aAffine.identity(); // force compact layout
+ aAffine.set(0,0, 1.0);
+ aAffine.set(0,1, 2.0);
+ aAffine.set(0,2, 3.0);
+ aAffine.set(1,0, 4.0);
+ aAffine.set(1,1, 5.0);
+ aAffine.set(1,2, 6.0);
+
+ aPerspective.set(0,0, 1.0);
+ aPerspective.set(0,1, 2.0);
+ aPerspective.set(0,2, 3.0);
+ aPerspective.set(1,0, 4.0);
+ aPerspective.set(1,1, 5.0);
+ aPerspective.set(1,2, 6.0);
+ aPerspective.set(2,0, 7.0);
+ aPerspective.set(2,1, 8.0);
+ aPerspective.set(2,2, 9.0);
+
+ ASSERT_TRUE(aIdentity == maIdentity) << "operator==: identity matrix";
+ ASSERT_TRUE(aScale == maScale) << "operator==: scale matrix";
+ ASSERT_TRUE(aTranslate == maTranslate) << "operator==: translate matrix";
+ ASSERT_TRUE(aShear == maShear) << "operator==: shear matrix";
+ ASSERT_TRUE(aAffine == maAffine) << "operator==: affine matrix";
+ ASSERT_TRUE(aPerspective == maPerspective) << "operator==: perspective matrix";
+}
+
+TEST_F(b2dhommatrix, identity)
+{
+ B2DHomMatrix ident;
- CPPUNIT_TEST_SUITE(b2dhommatrix);
- CPPUNIT_TEST(equal);
- CPPUNIT_TEST(identity);
- CPPUNIT_TEST(scale);
- CPPUNIT_TEST(translate);
- CPPUNIT_TEST(shear);
- CPPUNIT_TEST(multiply);
- CPPUNIT_TEST(decompose);
- CPPUNIT_TEST_SUITE_END();
+ ASSERT_TRUE(maIdentity == ident) << "identity";
+}
-}; // class b2dhommatrix
+TEST_F(b2dhommatrix, scale)
+{
+ B2DHomMatrix mat;
+ mat.scale(2.0,20.0);
+ ASSERT_TRUE(maScale == mat) << "scale";
+}
+TEST_F(b2dhommatrix, translate)
+{
+ B2DHomMatrix mat;
+ mat.translate(20.0,2.0);
+ ASSERT_TRUE(maTranslate == mat) << "translate";
+}
+
+TEST_F(b2dhommatrix, shear)
+{
+ B2DHomMatrix mat;
+ mat.shearX(3.0);
+ mat.shearY(7.0);
+ ASSERT_TRUE(maShear == mat) << "translate";
+}
-class b2dhompoint : public CppUnit::TestFixture
+TEST_F(b2dhommatrix, multiply)
+{
+ B2DHomMatrix affineAffineProd;
+
+ affineAffineProd.set(0,0, 9);
+ affineAffineProd.set(0,1, 12);
+ affineAffineProd.set(0,2, 18);
+ affineAffineProd.set(1,0, 24);
+ affineAffineProd.set(1,1, 33);
+ affineAffineProd.set(1,2, 48);
+
+ B2DHomMatrix affinePerspectiveProd;
+
+ affinePerspectiveProd.set(0,0, 30);
+ affinePerspectiveProd.set(0,1, 36);
+ affinePerspectiveProd.set(0,2, 42);
+ affinePerspectiveProd.set(1,0, 66);
+ affinePerspectiveProd.set(1,1, 81);
+ affinePerspectiveProd.set(1,2, 96);
+ affinePerspectiveProd.set(2,0, 7);
+ affinePerspectiveProd.set(2,1, 8);
+ affinePerspectiveProd.set(2,2, 9);
+
+ B2DHomMatrix perspectiveAffineProd;
+
+ perspectiveAffineProd.set(0,0, 9);
+ perspectiveAffineProd.set(0,1, 12);
+ perspectiveAffineProd.set(0,2, 18);
+ perspectiveAffineProd.set(1,0, 24);
+ perspectiveAffineProd.set(1,1, 33);
+ perspectiveAffineProd.set(1,2, 48);
+ perspectiveAffineProd.set(2,0, 39);
+ perspectiveAffineProd.set(2,1, 54);
+ perspectiveAffineProd.set(2,2, 78);
+
+ B2DHomMatrix perspectivePerspectiveProd;
+
+ perspectivePerspectiveProd.set(0,0, 30);
+ perspectivePerspectiveProd.set(0,1, 36);
+ perspectivePerspectiveProd.set(0,2, 42);
+ perspectivePerspectiveProd.set(1,0, 66);
+ perspectivePerspectiveProd.set(1,1, 81);
+ perspectivePerspectiveProd.set(1,2, 96);
+ perspectivePerspectiveProd.set(2,0, 102);
+ perspectivePerspectiveProd.set(2,1, 126);
+ perspectivePerspectiveProd.set(2,2, 150);
+
+ B2DHomMatrix temp;
+
+ temp = maAffine;
+ temp*=maAffine;
+ ASSERT_TRUE(temp == affineAffineProd) << "multiply: both compact";
+
+ temp = maPerspective;
+ temp*=maAffine;
+ ASSERT_TRUE(temp == affinePerspectiveProd) << "multiply: first compact";
+
+ temp = maAffine;
+ temp*=maPerspective;
+ ASSERT_TRUE(temp == perspectiveAffineProd) << "multiply: second compact";
+
+ temp = maPerspective;
+ temp*=maPerspective;
+ ASSERT_TRUE(temp == perspectivePerspectiveProd) << "multiply: none compact";
+}
+
+
+TEST_F(b2dhommatrix, decompose)
+{
+ // test matrix decompositions. Each matrix decomposed and rebuilt
+ // using the decompose result should be the same as before. Test
+ // with all ranges of values. Translations are not tested since these
+ // are just the two rightmost values and uncritical
+ static double fSX(10.0);
+ static double fSY(12.0);
+ static double fR(45.0 * F_PI180);
+ static double fS(15.0 * F_PI180);
+
+ // check all possible scaling combinations
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, 0.0, 0.0)) << "decompose: error test A1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, 0.0, 0.0)) << "decompose: error test A2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, 0.0, 0.0)) << "decompose: error test A3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, 0.0, 0.0)) << "decompose: error test A4";
+
+ // check all possible scaling combinations with positive rotation
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, 0.0, fR)) << "decompose: error test B1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, 0.0, fR)) << "decompose: error test B2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, 0.0, fR)) << "decompose: error test B3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, 0.0, fR)) << "decompose: error test B4";
+
+ // check all possible scaling combinations with negative rotation
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, 0.0, -fR)) << "decompose: error test C1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, 0.0, -fR)) << "decompose: error test C2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, 0.0, -fR)) << "decompose: error test C3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, 0.0, -fR)) << "decompose: error test C4";
+
+ // check all possible scaling combinations with positive shear
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, tan(fS), 0.0)) << "decompose: error test D1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, tan(fS), 0.0)) << "decompose: error test D2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, tan(fS), 0.0)) << "decompose: error test D3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, tan(fS), 0.0)) << "decompose: error test D4";
+
+ // check all possible scaling combinations with negative shear
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, tan(-fS), 0.0)) << "decompose: error test E1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, tan(-fS), 0.0)) << "decompose: error test E2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, tan(-fS), 0.0)) << "decompose: error test E3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, tan(-fS), 0.0)) << "decompose: error test E4";
+
+ // check all possible scaling combinations with positive rotate and positive shear
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, tan(fS), fR)) << "decompose: error test F1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, tan(fS), fR)) << "decompose: error test F2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, tan(fS), fR)) << "decompose: error test F3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, tan(fS), fR)) << "decompose: error test F4";
+
+ // check all possible scaling combinations with negative rotate and positive shear
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, tan(fS), -fR)) << "decompose: error test G1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, tan(fS), -fR)) << "decompose: error test G2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, tan(fS), -fR)) << "decompose: error test G3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, tan(fS), -fR)) << "decompose: error test G4";
+
+ // check all possible scaling combinations with positive rotate and negative shear
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, tan(-fS), fR)) << "decompose: error test H1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, tan(-fS), fR)) << "decompose: error test H2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, tan(-fS), fR)) << "decompose: error test H3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, tan(-fS), fR)) << "decompose: error test H4";
+
+ // check all possible scaling combinations with negative rotate and negative shear
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, fSY, tan(-fS), -fR)) << "decompose: error test I1";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, fSY, tan(-fS), -fR)) << "decompose: error test I2";
+ ASSERT_TRUE(impDecomposeComposeTest(fSX, -fSY, tan(-fS), -fR)) << "decompose: error test I3";
+ ASSERT_TRUE(impDecomposeComposeTest(-fSX, -fSY, tan(-fS), -fR)) << "decompose: error test I4";
+}
+
+
+class b2dhompoint : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- void EmptyMethod()
- {
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dhompoint);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dhompoint
-class b2dpoint : public CppUnit::TestFixture
+class b2dpoint : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
+ virtual void SetUp()
{
}
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
+ virtual void TearDown()
{
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
}
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dpoint);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dpoint
-class b2dpolygon : public CppUnit::TestFixture
+class b2dpolygon : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
+ virtual void SetUp()
{
}
- // insert your test code here.
- void testBasics()
+ virtual void TearDown()
{
- B2DPolygon aPoly;
-
- aPoly.appendBezierSegment(B2DPoint(1,1),B2DPoint(2,2),B2DPoint(3,3));
-
- CPPUNIT_ASSERT_MESSAGE("#1 first polygon point wrong",
- aPoly.getB2DPoint(0) == B2DPoint(3,3));
- CPPUNIT_ASSERT_MESSAGE("#1 first control point wrong",
- aPoly.getPrevControlPoint(0) == B2DPoint(2,2));
- CPPUNIT_ASSERT_MESSAGE("#1 second control point wrong",
- aPoly.getNextControlPoint(0) == B2DPoint(3,3));
- CPPUNIT_ASSERT_MESSAGE("next control point not used",
- aPoly.isNextControlPointUsed(0) == false);
-
- aPoly.setNextControlPoint(0,B2DPoint(4,4));
- CPPUNIT_ASSERT_MESSAGE("#1.1 second control point wrong",
- aPoly.getNextControlPoint(0) == B2DPoint(4,4));
- CPPUNIT_ASSERT_MESSAGE("next control point used",
- aPoly.isNextControlPointUsed(0) == true);
- CPPUNIT_ASSERT_MESSAGE("areControlPointsUsed() wrong",
- aPoly.areControlPointsUsed() == true);
- CPPUNIT_ASSERT_MESSAGE("getContinuityInPoint() wrong",
- aPoly.getContinuityInPoint(0) == CONTINUITY_C2);
-
- aPoly.resetControlPoints();
- CPPUNIT_ASSERT_MESSAGE("resetControlPoints() did not clear",
- aPoly.getB2DPoint(0) == B2DPoint(3,3));
- CPPUNIT_ASSERT_MESSAGE("resetControlPoints() did not clear",
- aPoly.getPrevControlPoint(0) == B2DPoint(3,3));
- CPPUNIT_ASSERT_MESSAGE("resetControlPoints() did not clear",
- aPoly.getNextControlPoint(0) == B2DPoint(3,3));
- CPPUNIT_ASSERT_MESSAGE("areControlPointsUsed() wrong #2",
- aPoly.areControlPointsUsed() == false);
-
- aPoly.clear();
- aPoly.append(B2DPoint(0,0));
- aPoly.appendBezierSegment(B2DPoint(1,1),B2DPoint(2,2),B2DPoint(3,3));
-
- CPPUNIT_ASSERT_MESSAGE("#2 first polygon point wrong",
- aPoly.getB2DPoint(0) == B2DPoint(0,0));
- CPPUNIT_ASSERT_MESSAGE("#2 first control point wrong",
- aPoly.getPrevControlPoint(0) == B2DPoint(0,0));
- CPPUNIT_ASSERT_MESSAGE("#2 second control point wrong",
- aPoly.getNextControlPoint(0) == B2DPoint(1,1));
- CPPUNIT_ASSERT_MESSAGE("#2 third control point wrong",
- aPoly.getPrevControlPoint(1) == B2DPoint(2,2));
- CPPUNIT_ASSERT_MESSAGE("#2 fourth control point wrong",
- aPoly.getNextControlPoint(1) == B2DPoint(3,3));
- CPPUNIT_ASSERT_MESSAGE("#2 second polygon point wrong",
- aPoly.getB2DPoint(1) == B2DPoint(3,3));
}
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dpolygon);
- CPPUNIT_TEST(testBasics);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dpolygon
-
-class b2dpolygontools : public CppUnit::TestFixture
+TEST_F(b2dpolygon, testBasics)
+{
+ B2DPolygon aPoly;
+
+ aPoly.appendBezierSegment(B2DPoint(1,1),B2DPoint(2,2),B2DPoint(3,3));
+
+ ASSERT_TRUE(aPoly.getB2DPoint(0) == B2DPoint(3,3)) << "#1 first polygon point wrong";
+ ASSERT_TRUE(aPoly.getPrevControlPoint(0) == B2DPoint(2,2)) << "#1 first control point wrong";
+ ASSERT_TRUE(aPoly.getNextControlPoint(0) == B2DPoint(3,3)) << "#1 second control point wrong";
+ ASSERT_TRUE(aPoly.isNextControlPointUsed(0) == false) << "next control point not used";
+
+ aPoly.setNextControlPoint(0,B2DPoint(4,4));
+ ASSERT_TRUE(aPoly.getNextControlPoint(0) == B2DPoint(4,4)) << "#1.1 second control point wrong";
+ ASSERT_TRUE(aPoly.isNextControlPointUsed(0) == true) << "next control point used";
+ ASSERT_TRUE(aPoly.areControlPointsUsed() == true) << "areControlPointsUsed() wrong";
+ ASSERT_TRUE(aPoly.getContinuityInPoint(0) == CONTINUITY_C2) << "getContinuityInPoint() wrong";
+
+ aPoly.resetControlPoints();
+ ASSERT_TRUE(aPoly.getB2DPoint(0) == B2DPoint(3,3)) << "resetControlPoints() did not clear";
+ ASSERT_TRUE(aPoly.getPrevControlPoint(0) == B2DPoint(3,3)) << "resetControlPoints() did not clear";
+ ASSERT_TRUE(aPoly.getNextControlPoint(0) == B2DPoint(3,3)) << "resetControlPoints() did not clear";
+ ASSERT_TRUE(aPoly.areControlPointsUsed() == false) << "areControlPointsUsed() wrong #2";
+
+ aPoly.clear();
+ aPoly.append(B2DPoint(0,0));
+ aPoly.appendBezierSegment(B2DPoint(1,1),B2DPoint(2,2),B2DPoint(3,3));
+
+ ASSERT_TRUE(aPoly.getB2DPoint(0) == B2DPoint(0,0)) << "#2 first polygon point wrong";
+ ASSERT_TRUE(aPoly.getPrevControlPoint(0) == B2DPoint(0,0)) << "#2 first control point wrong";
+ ASSERT_TRUE(aPoly.getNextControlPoint(0) == B2DPoint(1,1)) << "#2 second control point wrong";
+ ASSERT_TRUE(aPoly.getPrevControlPoint(1) == B2DPoint(2,2)) << "#2 third control point wrong";
+ ASSERT_TRUE(aPoly.getNextControlPoint(1) == B2DPoint(3,3)) << "#2 fourth control point wrong";
+ ASSERT_TRUE(aPoly.getB2DPoint(1) == B2DPoint(3,3)) << "#2 second polygon point wrong";
+}
+
+class b2dpolygontools : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- // this is only demonstration code
- void testIsRectangle()
- {
- B2DPolygon aRect1(
- tools::createPolygonFromRect(
- B2DRange(0,0,1,1) ) );
-
- B2DPolygon aRect2;
- aRect2.append( B2DPoint(0,0) );
- aRect2.append( B2DPoint(1,0) );
- aRect2.append( B2DPoint(1,.5));
- aRect2.append( B2DPoint(1,1) );
- aRect2.append( B2DPoint(0,1) );
- aRect2.setClosed(true);
-
- B2DPolygon aNonRect1;
- aNonRect1.append( B2DPoint(0,0) );
- aNonRect1.append( B2DPoint(1,0) );
- aNonRect1.append( B2DPoint(1,1) );
- aNonRect1.append( B2DPoint(0.5,1) );
- aNonRect1.append( B2DPoint(0.5,0) );
- aNonRect1.setClosed(true);
-
- B2DPolygon aNonRect2;
- aNonRect2.append( B2DPoint(0,0) );
- aNonRect2.append( B2DPoint(1,1) );
- aNonRect2.append( B2DPoint(1,0) );
- aNonRect2.append( B2DPoint(0,1) );
- aNonRect2.setClosed(true);
-
- B2DPolygon aNonRect3;
- aNonRect3.append( B2DPoint(0,0) );
- aNonRect3.append( B2DPoint(1,0) );
- aNonRect3.append( B2DPoint(1,1) );
- aNonRect3.setClosed(true);
-
- B2DPolygon aNonRect4;
- aNonRect4.append( B2DPoint(0,0) );
- aNonRect4.append( B2DPoint(1,0) );
- aNonRect4.append( B2DPoint(1,1) );
- aNonRect4.append( B2DPoint(0,1) );
-
- B2DPolygon aNonRect5;
- aNonRect5.append( B2DPoint(0,0) );
- aNonRect5.append( B2DPoint(1,0) );
- aNonRect5.append( B2DPoint(1,1) );
- aNonRect5.append( B2DPoint(0,1) );
- aNonRect5.setControlPoints(1,B2DPoint(1,0),B2DPoint(-11,0));
- aNonRect5.setClosed(true);
-
- CPPUNIT_ASSERT_MESSAGE("checking rectangle-ness of rectangle 1",
- tools::isRectangle( aRect1 ));
- CPPUNIT_ASSERT_MESSAGE("checking rectangle-ness of rectangle 2",
- tools::isRectangle( aRect2 ));
- CPPUNIT_ASSERT_MESSAGE("checking non-rectangle-ness of polygon 1",
- !tools::isRectangle( aNonRect1 ));
- CPPUNIT_ASSERT_MESSAGE("checking non-rectangle-ness of polygon 2",
- !tools::isRectangle( aNonRect2 ));
- CPPUNIT_ASSERT_MESSAGE("checking non-rectangle-ness of polygon 3",
- !tools::isRectangle( aNonRect3 ));
- CPPUNIT_ASSERT_MESSAGE("checking non-rectangle-ness of polygon 4",
- !tools::isRectangle( aNonRect4 ));
- CPPUNIT_ASSERT_MESSAGE("checking non-rectangle-ness of polygon 5",
- !tools::isRectangle( aNonRect5 ));
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dpolygontools);
- CPPUNIT_TEST(testIsRectangle);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dpolygontools
-
-class b2dpolypolygon : public CppUnit::TestFixture
+TEST_F(b2dpolygontools, testIsRectangle)
+{
+ B2DPolygon aRect1(
+ tools::createPolygonFromRect(
+ B2DRange(0,0,1,1) ) );
+
+ B2DPolygon aRect2;
+ aRect2.append( B2DPoint(0,0) );
+ aRect2.append( B2DPoint(1,0) );
+ aRect2.append( B2DPoint(1,.5));
+ aRect2.append( B2DPoint(1,1) );
+ aRect2.append( B2DPoint(0,1) );
+ aRect2.setClosed(true);
+
+ B2DPolygon aNonRect1;
+ aNonRect1.append( B2DPoint(0,0) );
+ aNonRect1.append( B2DPoint(1,0) );
+ aNonRect1.append( B2DPoint(1,1) );
+ aNonRect1.append( B2DPoint(0.5,1) );
+ aNonRect1.append( B2DPoint(0.5,0) );
+ aNonRect1.setClosed(true);
+
+ B2DPolygon aNonRect2;
+ aNonRect2.append( B2DPoint(0,0) );
+ aNonRect2.append( B2DPoint(1,1) );
+ aNonRect2.append( B2DPoint(1,0) );
+ aNonRect2.append( B2DPoint(0,1) );
+ aNonRect2.setClosed(true);
+
+ B2DPolygon aNonRect3;
+ aNonRect3.append( B2DPoint(0,0) );
+ aNonRect3.append( B2DPoint(1,0) );
+ aNonRect3.append( B2DPoint(1,1) );
+ aNonRect3.setClosed(true);
+
+ B2DPolygon aNonRect4;
+ aNonRect4.append( B2DPoint(0,0) );
+ aNonRect4.append( B2DPoint(1,0) );
+ aNonRect4.append( B2DPoint(1,1) );
+ aNonRect4.append( B2DPoint(0,1) );
+
+ B2DPolygon aNonRect5;
+ aNonRect5.append( B2DPoint(0,0) );
+ aNonRect5.append( B2DPoint(1,0) );
+ aNonRect5.append( B2DPoint(1,1) );
+ aNonRect5.append( B2DPoint(0,1) );
+ aNonRect5.setControlPoints(1,B2DPoint(1,0),B2DPoint(-11,0));
+ aNonRect5.setClosed(true);
+
+ ASSERT_TRUE(tools::isRectangle( aRect1 )) << "checking rectangle-ness of rectangle 1";
+ ASSERT_TRUE(tools::isRectangle( aRect2 )) << "checking rectangle-ness of rectangle 2";
+ ASSERT_TRUE(!tools::isRectangle( aNonRect1 )) << "checking non-rectangle-ness of polygon 1";
+ ASSERT_TRUE(!tools::isRectangle( aNonRect2 )) << "checking non-rectangle-ness of polygon 2";
+ ASSERT_TRUE(!tools::isRectangle( aNonRect3 )) << "checking non-rectangle-ness of polygon 3";
+ ASSERT_TRUE(!tools::isRectangle( aNonRect4 )) << "checking non-rectangle-ness of polygon 4";
+ ASSERT_TRUE(!tools::isRectangle( aNonRect5 )) << "checking non-rectangle-ness of polygon 5";
+}
+
+class b2dpolypolygon : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- void EmptyMethod()
- {
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dpolypolygon);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dpolypolygon
-class b2dquadraticbezier : public CppUnit::TestFixture
+class b2dquadraticbezier : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
+ virtual void SetUp()
{
}
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
+ virtual void TearDown()
{
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
}
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dquadraticbezier);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dquadraticbezier
-class b2drange : public CppUnit::TestFixture
+class b2drange : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- void EmptyMethod()
- {
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2drange);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2drange
-class b2dtuple : public CppUnit::TestFixture
+class b2dtuple : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
- {
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dtuple);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dtuple
-class b2dvector : public CppUnit::TestFixture
+class b2dvector : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
+ virtual void SetUp()
{
}
- // insert your test code here.
- void EmptyMethod()
+ virtual void TearDown()
{
}
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b2dvector);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b2dvector
-class bcolor : public CppUnit::TestFixture
+class bcolor : public ::testing::Test
{
+protected:
BColor maWhite;
BColor maBlack;
BColor maRed;
@@ -1277,177 +1065,93 @@ public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
+}; // class bcolor
- // insert your test code here.
- void hslTest()
- {
- CPPUNIT_ASSERT_MESSAGE("white",
- tools::rgb2hsl(maWhite) == BColor(0,0,1));
- CPPUNIT_ASSERT_MESSAGE("black",
- tools::rgb2hsl(maBlack) == BColor(0,0,0));
- CPPUNIT_ASSERT_MESSAGE("red",
- tools::rgb2hsl(maRed) == BColor(0,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("green",
- tools::rgb2hsl(maGreen) == BColor(120,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("blue",
- tools::rgb2hsl(maBlue) == BColor(240,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("yellow",
- tools::rgb2hsl(maYellow) == BColor(60,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("magenta",
- tools::rgb2hsl(maMagenta) == BColor(300,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("cyan",
- tools::rgb2hsl(maCyan) == BColor(180,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("third hue case",
- tools::rgb2hsl(BColor(0,0.5,1)) == BColor(210,1,0.5));
-
- CPPUNIT_ASSERT_MESSAGE("roundtrip white",
- tools::hsl2rgb(tools::rgb2hsl(maWhite)) == maWhite);
- CPPUNIT_ASSERT_MESSAGE("roundtrip black",
- tools::hsl2rgb(tools::rgb2hsl(maBlack)) == maBlack);
- CPPUNIT_ASSERT_MESSAGE("roundtrip red",
- tools::hsl2rgb(tools::rgb2hsl(maRed)) == maRed);
- CPPUNIT_ASSERT_MESSAGE("roundtrip green",
- tools::hsl2rgb(tools::rgb2hsl(maGreen)) == maGreen);
- CPPUNIT_ASSERT_MESSAGE("roundtrip blue",
- tools::hsl2rgb(tools::rgb2hsl(maBlue)) == maBlue);
- CPPUNIT_ASSERT_MESSAGE("roundtrip yellow",
- tools::hsl2rgb(tools::rgb2hsl(maYellow)) == maYellow);
- CPPUNIT_ASSERT_MESSAGE("roundtrip magenta",
- tools::hsl2rgb(tools::rgb2hsl(maMagenta)) == maMagenta);
- CPPUNIT_ASSERT_MESSAGE("roundtrip cyan",
- tools::hsl2rgb(tools::rgb2hsl(maCyan)) == maCyan);
-
- CPPUNIT_ASSERT_MESSAGE("grey10",
- tools::rgb2hsl(maWhite*.1) == BColor(0,0,.1));
- CPPUNIT_ASSERT_MESSAGE("grey90",
- tools::rgb2hsl(maWhite*.9) == BColor(0,0,.9));
- CPPUNIT_ASSERT_MESSAGE("red/2",
- tools::rgb2hsl(maRed*.5) == BColor(0,1,0.25));
- CPPUNIT_ASSERT_MESSAGE("green/2",
- tools::rgb2hsl(maGreen*.5) == BColor(120,1,0.25));
- CPPUNIT_ASSERT_MESSAGE("blue/2",
- tools::rgb2hsl(maBlue*.5) == BColor(240,1,0.25));
- CPPUNIT_ASSERT_MESSAGE("yellow/2",
- tools::rgb2hsl(maYellow*.5) == BColor(60,1,0.25));
- CPPUNIT_ASSERT_MESSAGE("magenta/2",
- tools::rgb2hsl(maMagenta*.5) == BColor(300,1,0.25));
- CPPUNIT_ASSERT_MESSAGE("cyan/2",
- tools::rgb2hsl(maCyan*.5) == BColor(180,1,0.25));
-
- CPPUNIT_ASSERT_MESSAGE("pastel",
- tools::rgb2hsl(BColor(.75,.25,.25)) == BColor(0,.5,.5));
- }
-
- // insert your test code here.
- void hsvTest()
- {
- CPPUNIT_ASSERT_MESSAGE("white",
- tools::rgb2hsv(maWhite) == BColor(0,0,1));
- CPPUNIT_ASSERT_MESSAGE("black",
- tools::rgb2hsv(maBlack) == BColor(0,0,0));
- CPPUNIT_ASSERT_MESSAGE("red",
- tools::rgb2hsv(maRed) == BColor(0,1,1));
- CPPUNIT_ASSERT_MESSAGE("green",
- tools::rgb2hsv(maGreen) == BColor(120,1,1));
- CPPUNIT_ASSERT_MESSAGE("blue",
- tools::rgb2hsv(maBlue) == BColor(240,1,1));
- CPPUNIT_ASSERT_MESSAGE("yellow",
- tools::rgb2hsv(maYellow) == BColor(60,1,1));
- CPPUNIT_ASSERT_MESSAGE("magenta",
- tools::rgb2hsv(maMagenta) == BColor(300,1,1));
- CPPUNIT_ASSERT_MESSAGE("cyan",
- tools::rgb2hsv(maCyan) == BColor(180,1,1));
-
- CPPUNIT_ASSERT_MESSAGE("roundtrip white",
- tools::hsv2rgb(tools::rgb2hsv(maWhite)) == maWhite);
- CPPUNIT_ASSERT_MESSAGE("roundtrip black",
- tools::hsv2rgb(tools::rgb2hsv(maBlack)) == maBlack);
- CPPUNIT_ASSERT_MESSAGE("roundtrip red",
- tools::hsv2rgb(tools::rgb2hsv(maRed)) == maRed);
- CPPUNIT_ASSERT_MESSAGE("roundtrip green",
- tools::hsv2rgb(tools::rgb2hsv(maGreen)) == maGreen);
- CPPUNIT_ASSERT_MESSAGE("roundtrip blue",
- tools::hsv2rgb(tools::rgb2hsv(maBlue)) == maBlue);
- CPPUNIT_ASSERT_MESSAGE("roundtrip yellow",
- tools::hsv2rgb(tools::rgb2hsv(maYellow)) == maYellow);
- CPPUNIT_ASSERT_MESSAGE("roundtrip magenta",
- tools::hsv2rgb(tools::rgb2hsv(maMagenta)) == maMagenta);
- CPPUNIT_ASSERT_MESSAGE("roundtrip cyan",
- tools::hsv2rgb(tools::rgb2hsv(maCyan)) == maCyan);
-
- CPPUNIT_ASSERT_MESSAGE("grey10",
- tools::rgb2hsv(maWhite*.1) == BColor(0,0,.1));
- CPPUNIT_ASSERT_MESSAGE("grey90",
- tools::rgb2hsv(maWhite*.9) == BColor(0,0,.9));
- CPPUNIT_ASSERT_MESSAGE("red/2",
- tools::rgb2hsv(maRed*.5) == BColor(0,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("green/2",
- tools::rgb2hsv(maGreen*.5) == BColor(120,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("blue/2",
- tools::rgb2hsv(maBlue*.5) == BColor(240,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("yellow/2",
- tools::rgb2hsv(maYellow*.5) == BColor(60,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("magenta/2",
- tools::rgb2hsv(maMagenta*.5) == BColor(300,1,0.5));
- CPPUNIT_ASSERT_MESSAGE("cyan/2",
- tools::rgb2hsv(maCyan*.5) == BColor(180,1,0.5));
-
- CPPUNIT_ASSERT_MESSAGE("pastel",
- tools::rgb2hsv(BColor(.5,.25,.25)) == BColor(0,.5,.5));
- }
-
- void ciexyzTest()
- {
- tools::rgb2ciexyz(maWhite);
- tools::rgb2ciexyz(maBlack);
- tools::rgb2ciexyz(maRed);
- tools::rgb2ciexyz(maGreen);
- tools::rgb2ciexyz(maBlue);
- tools::rgb2ciexyz(maYellow);
- tools::rgb2ciexyz(maMagenta);
- tools::rgb2ciexyz(maCyan);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(bcolor);
- CPPUNIT_TEST(hslTest);
- CPPUNIT_TEST(hsvTest);
- CPPUNIT_TEST(ciexyzTest);
- CPPUNIT_TEST_SUITE_END();
-}; // class b2dvector
+TEST_F(bcolor, hslTest)
+{
+ ASSERT_TRUE(tools::rgb2hsl(maWhite) == BColor(0,0,1)) << "white";
+ ASSERT_TRUE(tools::rgb2hsl(maBlack) == BColor(0,0,0)) << "black";
+ ASSERT_TRUE(tools::rgb2hsl(maRed) == BColor(0,1,0.5)) << "red";
+ ASSERT_TRUE(tools::rgb2hsl(maGreen) == BColor(120,1,0.5)) << "green";
+ ASSERT_TRUE(tools::rgb2hsl(maBlue) == BColor(240,1,0.5)) << "blue";
+ ASSERT_TRUE(tools::rgb2hsl(maYellow) == BColor(60,1,0.5)) << "yellow";
+ ASSERT_TRUE(tools::rgb2hsl(maMagenta) == BColor(300,1,0.5)) << "magenta";
+ ASSERT_TRUE(tools::rgb2hsl(maCyan) == BColor(180,1,0.5)) << "cyan";
+ ASSERT_TRUE(tools::rgb2hsl(BColor(0,0.5,1)) == BColor(210,1,0.5)) << "third hue case";
+
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maWhite)) == maWhite) << "roundtrip white";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maBlack)) == maBlack) << "roundtrip black";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maRed)) == maRed) << "roundtrip red";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maGreen)) == maGreen) << "roundtrip green";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maBlue)) == maBlue) << "roundtrip blue";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maYellow)) == maYellow) << "roundtrip yellow";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maMagenta)) == maMagenta) << "roundtrip magenta";
+ ASSERT_TRUE(tools::hsl2rgb(tools::rgb2hsl(maCyan)) == maCyan) << "roundtrip cyan";
+
+ ASSERT_TRUE(tools::rgb2hsl(maWhite*.1) == BColor(0,0,.1)) << "grey10";
+ ASSERT_TRUE(tools::rgb2hsl(maWhite*.9) == BColor(0,0,.9)) << "grey90";
+ ASSERT_TRUE(tools::rgb2hsl(maRed*.5) == BColor(0,1,0.25)) << "red/2";
+ ASSERT_TRUE(tools::rgb2hsl(maGreen*.5) == BColor(120,1,0.25)) << "green/2";
+ ASSERT_TRUE(tools::rgb2hsl(maBlue*.5) == BColor(240,1,0.25)) << "blue/2";
+ ASSERT_TRUE(tools::rgb2hsl(maYellow*.5) == BColor(60,1,0.25)) << "yellow/2";
+ ASSERT_TRUE(tools::rgb2hsl(maMagenta*.5) == BColor(300,1,0.25)) << "magenta/2";
+ ASSERT_TRUE(tools::rgb2hsl(maCyan*.5) == BColor(180,1,0.25)) << "cyan/2";
+
+ ASSERT_TRUE(tools::rgb2hsl(BColor(.75,.25,.25)) == BColor(0,.5,.5)) << "pastel";
+}
+
+TEST_F(bcolor, hsvTest)
+{
+ ASSERT_TRUE(tools::rgb2hsv(maWhite) == BColor(0,0,1)) << "white";
+ ASSERT_TRUE(tools::rgb2hsv(maBlack) == BColor(0,0,0)) << "black";
+ ASSERT_TRUE(tools::rgb2hsv(maRed) == BColor(0,1,1)) << "red";
+ ASSERT_TRUE(tools::rgb2hsv(maGreen) == BColor(120,1,1)) << "green";
+ ASSERT_TRUE(tools::rgb2hsv(maBlue) == BColor(240,1,1)) << "blue";
+ ASSERT_TRUE(tools::rgb2hsv(maYellow) == BColor(60,1,1)) << "yellow";
+ ASSERT_TRUE(tools::rgb2hsv(maMagenta) == BColor(300,1,1)) << "magenta";
+ ASSERT_TRUE(tools::rgb2hsv(maCyan) == BColor(180,1,1)) << "cyan";
+
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maWhite)) == maWhite) << "roundtrip white";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maBlack)) == maBlack) << "roundtrip black";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maRed)) == maRed) << "roundtrip red";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maGreen)) == maGreen) << "roundtrip green";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maBlue)) == maBlue) << "roundtrip blue";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maYellow)) == maYellow) << "roundtrip yellow";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maMagenta)) == maMagenta) << "roundtrip magenta";
+ ASSERT_TRUE(tools::hsv2rgb(tools::rgb2hsv(maCyan)) == maCyan) << "roundtrip cyan";
+
+ ASSERT_TRUE(tools::rgb2hsv(maWhite*.1) == BColor(0,0,.1)) << "grey10";
+ ASSERT_TRUE(tools::rgb2hsv(maWhite*.9) == BColor(0,0,.9)) << "grey90";
+ ASSERT_TRUE(tools::rgb2hsv(maRed*.5) == BColor(0,1,0.5)) << "red/2";
+ ASSERT_TRUE(tools::rgb2hsv(maGreen*.5) == BColor(120,1,0.5)) << "green/2";
+ ASSERT_TRUE(tools::rgb2hsv(maBlue*.5) == BColor(240,1,0.5)) << "blue/2";
+ ASSERT_TRUE(tools::rgb2hsv(maYellow*.5) == BColor(60,1,0.5)) << "yellow/2";
+ ASSERT_TRUE(tools::rgb2hsv(maMagenta*.5) == BColor(300,1,0.5)) << "magenta/2";
+ ASSERT_TRUE(tools::rgb2hsv(maCyan*.5) == BColor(180,1,0.5)) << "cyan/2";
+
+ ASSERT_TRUE(tools::rgb2hsv(BColor(.5,.25,.25)) == BColor(0,.5,.5)) << "pastel";
+}
+
+TEST_F(bcolor, ciexyzTest)
+{
+ tools::rgb2ciexyz(maWhite);
+ tools::rgb2ciexyz(maBlack);
+ tools::rgb2ciexyz(maRed);
+ tools::rgb2ciexyz(maGreen);
+ tools::rgb2ciexyz(maBlue);
+ tools::rgb2ciexyz(maYellow);
+ tools::rgb2ciexyz(maMagenta);
+ tools::rgb2ciexyz(maCyan);
+}
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dsvgdimpex);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dpolyrange);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dcubicbezier);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dhommatrix);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dhompoint);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dpoint);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dpolygon);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dpolygontools);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dpolypolygon);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dquadraticbezier);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2drange);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dtuple);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::b2dvector);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx2d::bcolor);
} // namespace basegfx2d
-
-// -----------------------------------------------------------------------------
-
-// this macro creates an empty function, which will called by the RegisterAllFunctions()
-// to let the user the possibility to also register some functions by hand.
-// NOADDITIONAL;
-
diff --git a/basegfx/test/basegfx3d.cxx b/basegfx/test/basegfx3d.cxx
index ad418c1..652caa2 100644
--- a/basegfx/test/basegfx3d.cxx
+++ b/basegfx/test/basegfx3d.cxx
@@ -27,194 +27,96 @@
// autogenerated file with codegen.pl
#include "preextstl.h"
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
+#include "gtest/gtest.h"
#include "postextstl.h"
namespace basegfx3d
{
-class b3dhommatrix : public CppUnit::TestFixture
+class b3dhommatrix : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
- {
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b3dhommatrix);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b3dhommatrix
-class b3dhompoint : public CppUnit::TestFixture
+class b3dhompoint : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- void EmptyMethod()
- {
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b3dhompoint);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b3dhompoint
-class b3dpoint : public CppUnit::TestFixture
+class b3dpoint : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
- {
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b3dpoint);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b3dpoint
-class b3drange : public CppUnit::TestFixture
+class b3drange : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
+ virtual void SetUp()
{
}
- // insert your test code here.
- void EmptyMethod()
+ virtual void TearDown()
{
}
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b3drange);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b3drange
-class b3dtuple : public CppUnit::TestFixture
+class b3dtuple : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
+ virtual void SetUp()
{
}
- // insert your test code here.
- // this is only demonstration code
- void EmptyMethod()
+ virtual void TearDown()
{
- // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
}
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b3dtuple);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b3dtuple
-class b3dvector : public CppUnit::TestFixture
+class b3dvector : public ::testing::Test
{
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
}
- void tearDown()
+ virtual void TearDown()
{
}
-
- // insert your test code here.
- void EmptyMethod()
- {
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(b3dvector);
- CPPUNIT_TEST(EmptyMethod);
- CPPUNIT_TEST_SUITE_END();
}; // class b3dvector
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx3d::b3dhommatrix);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx3d::b3dhompoint);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx3d::b3dpoint);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx3d::b3drange);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx3d::b3dtuple);
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfx3d::b3dvector);
-} // namespace basegfx3d
-
-
-// -----------------------------------------------------------------------------
-// this macro creates an empty function, which will called by the RegisterAllFunctions()
-// to let the user the possibility to also register some functions by hand.
-// NOADDITIONAL;
+} // namespace basegfx3d
diff --git a/basegfx/test/basegfxtools.cxx b/basegfx/test/basegfxtools.cxx
index d6116c6..0384608 100644
--- a/basegfx/test/basegfxtools.cxx
+++ b/basegfx/test/basegfxtools.cxx
@@ -27,9 +27,7 @@
// autogenerated file with codegen.pl
#include "preextstl.h"
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
+#include "gtest/gtest.h"
#include "postextstl.h"
#include <basegfx/tools/keystoplerp.hxx>
@@ -43,8 +41,9 @@ using namespace ::boost::tuples;
namespace basegfxtools
{
-class KeyStopLerpTest : public CppUnit::TestFixture
+class KeyStopLerpTest : public ::testing::Test
{
+protected:
tools::KeyStopLerp maKeyStops;
static std::vector<double> getTestVector()
@@ -61,48 +60,40 @@ public:
maKeyStops(getTestVector())
{}
- void setUp()
+ virtual void SetUp()
{}
- void tearDown()
+ virtual void TearDown()
{}
+};
- void test()
- {
- double fAlpha;
- std::ptrdiff_t nIndex;
-
- tie(nIndex,fAlpha) = maKeyStops.lerp(-1.0);
- CPPUNIT_ASSERT_MESSAGE("-1.0", nIndex==0 && fAlpha==0.0);
-
- tie(nIndex,fAlpha) = maKeyStops.lerp(0.1);
- CPPUNIT_ASSERT_MESSAGE("0.1", nIndex==0 && fAlpha==0.0);
+TEST_F(KeyStopLerpTest, test)
+{
+ double fAlpha;
+ std::ptrdiff_t nIndex;
- tie(nIndex,fAlpha) = maKeyStops.lerp(0.3);
- CPPUNIT_ASSERT_MESSAGE("0.3", nIndex==0 && fTools::equal(fAlpha,0.5));
+ tie(nIndex,fAlpha) = maKeyStops.lerp(-1.0);
+ ASSERT_TRUE(nIndex==0 && fAlpha==0.0) << "-1.0";
- tie(nIndex,fAlpha) = maKeyStops.lerp(0.5);
- CPPUNIT_ASSERT_MESSAGE("0.5", nIndex==0 && fTools::equal(fAlpha,1.0));
+ tie(nIndex,fAlpha) = maKeyStops.lerp(0.1);
+ ASSERT_TRUE(nIndex==0 && fAlpha==0.0) << "0.1";
- tie(nIndex,fAlpha) = maKeyStops.lerp(0.51);
- CPPUNIT_ASSERT_MESSAGE("0.51", nIndex==1 && fTools::equal(fAlpha,0.025));
+ tie(nIndex,fAlpha) = maKeyStops.lerp(0.3);
+ ASSERT_TRUE(nIndex==0 && fTools::equal(fAlpha,0.5)) << "0.3";
- tie(nIndex,fAlpha) = maKeyStops.lerp(0.9);
- CPPUNIT_ASSERT_MESSAGE("0.51", nIndex==1 && fTools::equal(fAlpha,1.0));
+ tie(nIndex,fAlpha) = maKeyStops.lerp(0.5);
+ ASSERT_TRUE(nIndex==0 && fTools::equal(fAlpha,1.0)) << "0.5";
- tie(nIndex,fAlpha) = maKeyStops.lerp(1.0);
- CPPUNIT_ASSERT_MESSAGE("0.51", nIndex==1 && fAlpha==1.0);
- }
+ tie(nIndex,fAlpha) = maKeyStops.lerp(0.51);
+ ASSERT_TRUE(nIndex==1 && fTools::equal(fAlpha,0.025)) << "0.51";
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
+ tie(nIndex,fAlpha) = maKeyStops.lerp(0.9);
+ ASSERT_TRUE(nIndex==1 && fTools::equal(fAlpha,1.0)) << "0.51";
- CPPUNIT_TEST_SUITE(KeyStopLerpTest);
- CPPUNIT_TEST(test);
- CPPUNIT_TEST_SUITE_END();
-};
+ tie(nIndex,fAlpha) = maKeyStops.lerp(1.0);
+ ASSERT_TRUE(nIndex==1 && fAlpha==1.0) << "0.51";
+}
// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_REGISTRATION(basegfxtools::KeyStopLerpTest);
+
} // namespace basegfxtools
diff --git a/basegfx/test/boxclipper.cxx b/basegfx/test/boxclipper.cxx
index 6672dc8..41c85a1 100644
--- a/basegfx/test/boxclipper.cxx
+++ b/basegfx/test/boxclipper.cxx
@@ -27,9 +27,7 @@
// autogenerated file with codegen.pl
#include "preextstl.h"
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
+#include "gtest/gtest.h"
#include "postextstl.h"
#include <basegfx/matrix/b2dhommatrix.hxx>
@@ -48,6 +46,8 @@
using namespace ::basegfx;
+// FIXME:
+#define RUN_OLD_FAILING_TESTS 0
namespace basegfx2d
{
@@ -67,9 +67,9 @@ inline bool compare(const B2DPoint& left, const B2DPoint& right)
}
-class boxclipper : public CppUnit::TestFixture
+class boxclipper : public ::testing::Test
{
-private:
+protected:
B2DPolyRange aDisjunctRanges;
B2DPolyRange aEqualRanges;
B2DPolyRange aIntersectionN;
@@ -88,7 +88,7 @@ private:
public:
// initialise your test code values here.
- void setUp()
+ virtual void SetUp()
{
B2DRange aCenter(100, 100, -100, -100);
B2DRange aOffside(800, 800, 1000, 1000);
@@ -189,7 +189,7 @@ public:
#endif
}
- void tearDown()
+ virtual void TearDown()
{
}
@@ -241,57 +241,16 @@ public:
void verifyPoly(const char* sName, const char* sSvg, const B2DPolyRange& toTest)
{
B2DPolyPolygon aTmp1;
- CPPUNIT_ASSERT_MESSAGE(sName,
- tools::importFromSvgD(
- aTmp1, rtl::OUString::createFromAscii(sSvg), false, 0));
+ ASSERT_TRUE(tools::importFromSvgD(aTmp1,
+ rtl::OUString::createFromAscii(sSvg), false, 0)) << sName;
const rtl::OUString aSvg=
tools::exportToSvgD(toTest.solveCrossovers(), true, true, false);
B2DPolyPolygon aTmp2;
- CPPUNIT_ASSERT_MESSAGE(sName,
- tools::importFromSvgD(
- aTmp2, aSvg, false, 0));
+ ASSERT_TRUE(tools::importFromSvgD(
+ aTmp2, aSvg, false, 0)) << sName;
- CPPUNIT_ASSERT_MESSAGE(
- sName,
- normalizePoly(aTmp2) == normalizePoly(aTmp1));
- }
-
- void verifyPoly()
- {
- const char* disjunct="m100 100v-200h-200v200zm1100 900v-200h-200v200z";
- const char* equal="m100 100v-200h-200v200zm200 0v-200h-200v200h200z";
- const char* intersectionN="m100 0v-100h-200v100zm200 100v-200-100h-200v100 200z";
- const char* intersectionE="m100 100v-200h-100v200zm200 0v-200h-200-100v200h100z";
- const char* intersectionS="m100 100v-200h-200v200 100h200v-100zm0 0v-100h-200v100z";
- const char* intersectionW="m0 100v-200h-100v200zm200 0v-200h-200-100v200h100z";
- const char* intersectionNE="m100 0v-100h-100v100zm200 0v-200h-200v100h-100v200h200v-100z";
- const char* intersectionSE="m200 200v-200h-100v-100h-200v200h100v100zm100-100v-100h-100v100z";
- const char* intersectionSW="m0 100v-100h-100v100zm200 0v-200h-200v100h-100v200h200v-100z";
- const char* intersectionNW="m100 100v-200h-100v-100h-200v200h100v100zm100-100v-100h-100v100z";
- const char* ringIntersection="m150 150v-100h-100v100zm300 0v-300h-200v-200h-300v300h200v100h-200v300h300v-200zm0-200v-100h-100v100z";
- const char* ringIntersection2="m-50-50v-100h-100v100zm100 200v-100h-100v100zm500 0v-300h-200v-200h-300v200h-200v300h200v200h300v-200zm-200-100v-100h100v100zm100-100v-100h-100v100zm100 200v-100h-100v100z";
- const char* ringIntersectExtraStrip="m-50-50v-100h-100v100zm100 200v-100h-100v100zm500 0v-300h-200v-200h-300v200h-200v300h200v200h300v-200zm-200-100v-100h100v25h-50v50h50v25zm150-25v-50h-150v50zm100-75v-100h-100v100zm100 200v-100h-100v100z";
- // TODO: old clipper impl. debug difference
- //const char* complexIntersections="m100 0h-100v-100 100h-100 100v100-100zm0 0zm200 0h-100v-100h-100v-100 100h-100v100h-100 100v100h100v100-100h100v-100zm0 0h-100v-100 100h-100 100v100-100h100zm0 0v-100h-100-100v100 100h100 100v-100zm100 0v-100h-100v-100h-100-100v100h-100v100 100h100v100h100 100v-100h100v-100zm-200 0zm100 0v-100h-100-100v100 100h100 100v-100zm100 100v-200-100h-200-100-100v100 200 100h100 100 200v-100zm-200-100zm1000 1000v-200h-200v200z";
- const char* complexIntersections="m0 0zm0 0zm0 0zm0 0v-100 100h-100 100v100-100h100zm-100 0v-100 100h-100 100v100-100h100zm0 0v-100h-100-100v100 100h100 100v-100zm0 0v-100h-100-100v100 100h100 100v-100zm0 0v-100h-100v-100 100h-100v100h-100 100v100h100v100-100h100v-100h100zm-100-100v-100h-100-100v100h-100v100 100h100v100h100 100v-100h100v-100-100zm0 0v-100h-200-100-100v100 200 100h100 100 200v-100-200zm600 900v200h200v-200z";
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list